On Tue, Dec 12, 2006 at 07:28:50AM +0900, James Edward Gray II wrote: > On Dec 11, 2006, at 4:19 PM, Gavin Kistner wrote: > >>>> def create_method(name) > >>>> class << self; self end.send(:define_method, name) { |*args| > >>args.first } > >>>> end > > > >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(). I write such things this way nowadays for that reason: class << self; self end.class_eval{ define_method(name){ |*args| args.first } } -- Mauricio Fernandez - http://eigenclass.org - singular Ruby