From: dblack@... Date: 2006-12-12T07:33:35+09:00 Subject: Re: best way to dynamically create new instance methods Hi -- On Tue, 12 Dec 2006, James Edward Gray II wrote: > On Dec 11, 2006, at 4:19 PM, Gavin Kistner wrote: > >> From: James Edward Gray II [mailto:james@grayproductions.net] >>> Sent: Monday, December 11, 2006 3:15 PM >>> To: ruby-talk ML >>> Subject: Re: best way to dynamically create new instance methods >> >>>>> def create_method(name) >>>>> class << self; self end.send(:define_method, name) { |*args| >>> args.first } >>>>> end >> >> Ooh, look at Mr. Fancy Pants, using his fancy #send to get around >> private methods. >> >> :) >> >> Really, I'm writing this email not to praise or make fun, but to point >> out that the above technique may not work when 1.9 rolls around. >> (Assuming I remember correctly that 1.9 will/may change so that #send >> honors the public/protected/private state of the method being invoked.) > > Correct. In 1.9 you need to use funcall() in place of send(). And keep a little card in your pocket to remind you which does which.... :-) David -- Q. What's a good holiday present for the serious Rails developer? A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black) aka The Ruby book for Rails developers! Q. Where can I get Ruby/Rails on-site training, consulting, coaching? A. Ruby Power and Light, LLC (http://www.rubypal.com)