On Saturday, December 6, 2003, 6:12:03 AM, Nathan wrote: >> >> > #Call the original definition of name on object >> > def call_orig(obj, name, *args) >> > obj.send(orig_name(name), *args) >> > end >> def call_orig(obj, name, *args, &block) >> obj.__send__(orig_name(name), *args, &block) >> end > What does __send__ do? And what's the block for? __send__ (commonly known as send) sends a message to an object. [1,2,3].send(:length) # => 3 __send__ is the canonical method, in case someone overwrites send. The block is included just so it gets passed on if provided. Gavin