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