Thank you Jean, that works wonderfully.

Thank you everyone else for your input as well.

-L

> -----Original Message-----
> From: Jean Helou [mailto:jean.helou / gmail.com]
> Sent: Monday, October 02, 2006 10:59 AM
> To: ruby-talk ML
> Subject: Re: Creating dynamically named singleton methods. Syntax
> question.
> 
> this seems to work
> 
> $ irb
> irb(main):001:0> o=Object.new
> => #<Object:0x100e3128>
> irb(main):002:0> s="test"
> => "test"
> irb(main):003:0> sym=s.to_sym
> => :test
> irb(main):004:0> o.instance_eval do
> irb(main):005:1* puts s
> irb(main):006:1> klass=class<<self;self;end
> irb(main):007:1> klass.send(:define_method,sym){puts "#{s}"}
> irb(main):008:1> end
> test
> => #<Proc:0x003df7d8@(irb):7>
> irb(main):009:0> o.test
> test
> => nil
> 
> 
> On 10/2/06, Luke Stark <Luke.Stark / mathworks.com> wrote:
> > Jean,
> >
> > Hmm. This looks close, but the :test in your example can only be a
> > variable that has been defined within the instance_eval...and I need
to
> > pass one from outside.
> >
> > The others run, but add the method to the class, rather than the
> > instance of that class.
> >
> > I'm sure there's a simple way. I just can't see it.
> >
> > -L
> >
> > > -----Original Message-----
> > > From: Jean Helou [mailto:jean.helou / gmail.com]
> > > Sent: Monday, October 02, 2006 9:41 AM
> > > To: ruby-talk ML
> > > Subject: Re: Creating dynamically named singleton methods. Syntax
> > > question.
> > >
> > > However this will define the given method for all new instances of
> > > obj.class (MyThing in my example) which are created after this
code is
> > > executed, which is not what the OP seemed to want.
> > >
> > > jean
> > >
> > > ps: in my example :test can be a variable and String.to_sym is
your
> > > friend.
> > >
> > > On 10/2/06, Martin Coxall <pseudo.meta / gmail.com> wrote:
> > > > On 10/2/06, Jan Svitok <jan.svitok / gmail.com> wrote:
> > > > >
> > > > > On 10/2/06, Luke Stark <Luke.Stark / mathworks.com> wrote:
> > > > > > You may create singleton methods like so:
> > > > > >
> > > >
> > > >
> > > > I'll have one more go. This time I'll get it right. ;p
> > > >
> > > > obj.class.instance_eval do
> > > >    define_method(:method_name) do |*args|
> > > >       # Method goes here
> > > >    end
> > > > end
> > > >
> > > > N.B. this actually works this time, because I tried it.
> > > >
> > > > Regards,
> > > >
> > > > Martin
> > > >
> > > >
> >
> >
> >