From: Erik Veenstra Date: 2006-07-23T03:04:32+09:00 Subject: Re: *_eval > Well, when you use keywords (like `def' 'alias') ruby use the > > "current" class to know where it must define the method. It's really only true for keyword stuff. define_method works as expected... > POLS? Well, _I_ am surprised! It's the first time, in all those years, that I'm surprised by Ruby. Well, I'm often surprised by Ruby, but that's in a positive way. Now I'm surprised in a negative way. I'm surprised being surprised! It's a shock! I'll switch back to good old Lisp... Good bye, brave Ruby people... It was a nice time... So long... gegroet, Erik V. - http://www.erikveen.dds.nl/ ---------------------------------------------------------------- class Foo instance_eval <<-END p [self, object_id] def bar1 end define_method :bar2 do end END module_eval <<-END p [self, object_id] def bar3 end define_method :bar4 do end END end p Foo.method_defined?(:bar1) # false p Foo.method_defined?(:bar2) # true p Foo.method_defined?(:bar3) # true p Foo.method_defined?(:bar4) # true p Foo.new.method(:bar1) rescue nil # no output! p Foo.new.method(:bar2) rescue nil # # p Foo.new.method(:bar3) rescue nil # # p Foo.new.method(:bar4) rescue nil # # ---------------------------------------------------------------- [Foo, -605293706] [Foo, -605293706] false true true true # # # ----------------------------------------------------------------