lib/delegate: #method doesn't delegate to its object
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
@@ -143,12 +143,11 @@ class Delegator
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)
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)