#704: Singleton bug with define_method --------------------------------+------------------------------------------- Reporter: m...@… | Owner: lsansone...@… Type: defect | Status: new Priority: major | Milestone: Component: MacRuby | Keywords: --------------------------------+------------------------------------------- I'm trying to dynamically add methods to my class in MacRuby. I'm getting a crash in my program. I haven't been able to cut that down to a smaller example yet, but I did find this problem when I tried.
The following program should print this output (and does from Ruby 1.9): {{{ 10.0 Float {"foo"=>10.0} }}} With MacRuby, it prints {{{ NilClass {"foo"=>10.0} }}} If you uncomment the print statement, it starts working. Here's the code {{{ class SingletonTest attr_reader :values def initialize @values = {} end def addMethod(name) singleton = class << self self end singleton.instance_exec(name) do |name| define_method("#{name}=") do |value| @values[name] = value end define_method("#{name}") do # puts "returning value" return @values[name] end end end end singleton_test = SingletonTest.new() singleton_test.addMethod('foo') singleton_test.foo = 10.0 value = singleton_test.foo puts value puts value.class puts singleton_test.values }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/704> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel