Actions
Bug #2207
closedlib/delegate: #method doesn't delegate to its object
Description
=begin
require 'delegate'
d = SimpleDelegator.new("hello")
d.method(:upcase) # ==> NameError: undefined method upcase' for class
SimpleDelegator'
Note that in Ruby 1.8, this does not create an error.
This is fixed by defining respond_to_missing? instead of respond_to?
diff --git a/lib/delegate.rb b/lib/delegate.rb
index 57c479c..6b9f91a 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -143,12 +143,11 @@ class Delegator
end
#
-
Checks for a method provided by this the delegate object by fowarding the¶
-
Checks for a method provided by this the delegate object by forwarding the¶
call through __getobj__.¶
- def respond_to?(m, include_private = false)
- return true if super
- return self.getobj.respond_to?(m, include_private)
- def respond_to_missing?(m, include_private = false)
-
getobj.respond_to?(m, include_private)
end
#
Only caveat is that after a change of object of different class, the method can produce a NoMethodError when called. (same as Ruby 1.8)
Any objection?
=end
Actions
Like0
Like0