[#25936] [Bug:1.9] [rubygems] $LOAD_PATH includes bin directory — Nobuyoshi Nakada <nobu@...>

Hi,

10 messages 2009/10/05

[#25943] Disabling tainting — Tony Arcieri <tony@...>

Would it make sense to have a flag passed to the interpreter on startup that

16 messages 2009/10/05

[#26028] [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error — Marc-Andre Lafortune <redmine@...>

Bug #2189: Math.atanh(1) & Math.atanh(-1) should not raise an error

14 messages 2009/10/10

[#26222] [Bug #2250] IO::for_fd() objects' finalization dangerously closes underlying fds — Mike Pomraning <redmine@...>

Bug #2250: IO::for_fd() objects' finalization dangerously closes underlying fds

11 messages 2009/10/22

[#26244] [Bug #2258] Kernel#require inside rb_require() inside rb_protect() inside SysV context fails — Suraj Kurapati <redmine@...>

Bug #2258: Kernel#require inside rb_require() inside rb_protect() inside SysV context fails

24 messages 2009/10/22

[#26361] [Feature #2294] [PATCH] ruby_bind_stack() to embed Ruby in coroutine — Suraj Kurapati <redmine@...>

Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine

42 messages 2009/10/27

[#26371] [Bug #2295] segmentation faults — tomer doron <redmine@...>

Bug #2295: segmentation faults

16 messages 2009/10/27

[ruby-core:26081] [Bug #2207] lib/delegate: #method doesn't delegate to its object

From: Marc-Andre Lafortune <redmine@...>
Date: 2009-10-14 04:46:50 UTC
List: ruby-core #26081
Bug #2207: lib/delegate: #method doesn't delegate to its object
http://redmine.ruby-lang.org/issues/show/2207

Author: Marc-Andre Lafortune
Status: Open, Priority: Normal
Category: lib, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2009-10-13 trunk 25317) [x86_64-darwin10.0.0]

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?


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next