James Gray
12/11/2006 10:29:00 PM
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().
James Edward Gray II