lib/delegate: #method doesn't delegate to its object
d = SimpleDelegator.new("hello")
d.method(:upcase) # ==> NameError: undefined method
upcase' for classSimpleDelegator'
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)