[Ironruby-core] override method_missing()

Lewis L. lists at ruby-forum.com
Wed Oct 19 13:00:09 EDT 2011


Thanks a lot. At least I won't be killing myself trying to figure out 
what I missed. FYI, I tested on version 1.1 and 1.1.3 and they seem to 
have the same issue.
Since we are on the subject, I wonder if you can spare some of your time 
help me understand this:

As far as I understand, the global environment is actually a singleton 
'main' Object. The function defined in the global scope should be 
translated to private method of Object class which is what it shows in 
iirb.bat. Not sure why ir.exe as well as the code in the ScriptEngine 
does not behave that way.

c:\Program Files\IronRuby 1.1\bin>ir
IronRuby 1.1.3.0 on .NET 4.0.30319.225
Copyright (c) Microsoft Corporation. All rights reserved.

>>> def global_hi
... puts 'hi'
... end
=> nil
>>> class A
...   def hi
...     global_hi
...   end
... end
=> nil
>>> A.new.hi
(ir):3:in `hi': undefined method `global_hi' for #<A:0x0000056> 
(NoMethodError)
        from (ir):1

>>> self.method(:global_hi)
=> #<Method: Object(#<Class:#<Object:0x0000058>>)#global_hi>
>>> exit

---------------------------------------------------------------------

c:\Program Files\IronRuby 1.1\bin>iirb
irb(main):001:0> def global_hi
irb(main):002:1>   puts 'hi'
irb(main):003:1> end
=> nil
irb(main):004:0> class A
irb(main):005:1>   def hi
irb(main):006:2>     global_hi
irb(main):007:2>   end
irb(main):008:1> end
=> nil
irb(main):009:0> A.new.hi
hi
=> nil
irb(main):010:0> self.method(:global_hi)
=> #<Method: Object#global_hi>
irb(main):011:0>

-- 
Posted via http://www.ruby-forum.com/.


More information about the Ironruby-core mailing list