#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
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel