From: Dhruva Sagar Date: 2010-05-20T10:51:24+09:00 Subject: Re: define_method inside instance_eval --005045013dbfbeec7d0486fccf83 Content-Type: text/plain; charset=UTF-8 Well the first thing that I see is that your missing the (*args) in the method instance_eval %{ def status_all "#{args.join(' ')}".split end } Should be instance_eval %{ def status_all(*args) "#{args.join(' ')}".split end } On Thu, May 20, 2010 at 06:59, Adriano Nagel wrote: > Hi, > > I'm trying to create a class macro that, when called, defines a class > method that returns the array passed to the class macro. > > For example, I'd have something like this in an included module: > > def status_field(*args) > instance_eval { define_method(:status_all) { args } } > end > > (I've put a complete example at http://gist.github.com/407035). > > I was under the impression that methods created inside instance_eval > would be defined inside the singleton class, but apparently > define_method seems to ignore that (why?). > > So I used the string form of instance_eval and produced this eyesore: > > instance_eval %{ > def status_all > "#{args.join(' ')}".split > end > } > > I must be missing something. Any hints on how to solve this problem > properly? I'd also like to avoid using eval on strings. > > Thanks! > > -- > Adriano > -- > Posted via http://www.ruby-forum.com/. > > -- Thanks & Regards, Dhruva Sagar. --005045013dbfbeec7d0486fccf83--