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.)
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().