Hi, I am trying to access top level method from the class definition in IronRuby scripts. Example: def global_hi end class A def hi global_hi end end A.new.hi The script executed in ScriptEngine throws a NoSuchMethodError. I tried to ran the same code in iirb.exe It seems to behave the way I expected. But when I tried it in ir.exe, it throws the exception as well. I investigate a little more and found out irb(main):021:0> self.method(:global_hi) => #<Method: Object#global_hi> and in ir.exe as well as script engine >>> self.method(:xx) => #<Method: Object(#<Class:#<Object:0x0000058>>)#xx> Is there anyway to make the script behave like the one in iirb.exe? Thanks, Lewis -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20110630/8710c6a3/attachment.html>
I cannot reproduce this issue with IronRuby 1.1.3.0 on .NET 4.0.30319.235 It works as expected: ir.exe result is same as irb result. Regards From: Lewis Lin Sent: Thursday, June 30, 2011 9:58 PM To: ironruby-core at rubyforge.org Subject: [Ironruby-core] Access Top Level methods Hi, I am trying to access top level method from the class definition in IronRuby scripts. Example: def global_hi end class A def hi global_hi end end A.new.hi The script executed in ScriptEngine throws a NoSuchMethodError. I tried to ran the same code in iirb.exe It seems to behave the way I expected. But when I tried it in ir.exe, it throws the exception as well. I investigate a little more and found out irb(main):021:0> self.method(:global_hi) => #<Method: Object#global_hi> and in ir.exe as well as script engine>>> self.method(:xx)=> #<Method: Object(#<Class:#<Object:0x0000058>>)#xx> Is there anyway to make the script behave like the one in iirb.exe? Thanks, Lewis -------------------------------------------------------------------------------- _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20110720/78269193/attachment-0001.html>
Hi, Thanks for the reply. My main development version is on 1.1 for .NET 3.5. However, I did try it on 1.1.3 on .NET 4.0.30319.225 and still are able to reproduce the issue. I am running Windows XP 32bit environment. Is there any environment variables I should look into? Here is the screen copy I just did. As far as I understand, the global environment is actually a ''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 ScriptEngine behaves differently. Thanks for your time! Lewis 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> On 7/20/2011 8:37 AM, Sickboy wrote:> I cannot reproduce this issue with IronRuby 1.1.3.0 on .NET 4.0.30319.235 > It works as expected: ir.exe result is same as irb result. > Regards > *From:* Lewis Lin <mailto:llin at polypaths.com> > *Sent:* Thursday, June 30, 2011 9:58 PM > *To:* ironruby-core at rubyforge.org <mailto:ironruby-core at rubyforge.org> > *Subject:* [Ironruby-core] Access Top Level methods > Hi, > > I am trying to access top level method from the class definition in > IronRuby scripts. Example: > > def global_hi > end > > class A > def hi > global_hi > end > end > > A.new.hi > > The script executed in ScriptEngine throws a NoSuchMethodError. > I tried to ran the same code in iirb.exe It seems to behave the way I > expected. But when I tried it in ir.exe, it throws the exception as well. > I investigate a little more and found out > > irb(main):021:0> self.method(:global_hi) > => #<Method: Object#global_hi> > and > in ir.exe as well as script engine > >>> self.method(:xx) > => #<Method: Object(#<Class:#<Object:0x0000058>>)#xx> > > Is there anyway to make the script behave like the one in iirb.exe? > > Thanks, > Lewis > > ------------------------------------------------------------------------ > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20110720/d64ccb47/attachment.html>
Hi, I am doing this to implement a DSL. I want to allow user to define some function and be used by the DSL. Without this, I don''t know how to get it working. I am sure there is a rational explanation for what I see. Could someone help me please? Thanks, Lewis On 7/20/2011 10:49 AM, Lewis Lin wrote:> Hi, > > Thanks for the reply. My main development version is on 1.1 for .NET > 3.5. However, I did try it on 1.1.3 on .NET 4.0.30319.225 and still > are able to reproduce the issue. I am running Windows XP 32bit > environment. Is there any environment variables I should look into? > Here is the screen copy I just did. > > As far as I understand, the global environment is actually a ''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 ScriptEngine behaves differently. > > Thanks for your time! > Lewis > > 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> > > > > > On 7/20/2011 8:37 AM, Sickboy wrote: >> I cannot reproduce this issue with IronRuby 1.1.3.0 on .NET 4.0.30319.235 >> It works as expected: ir.exe result is same as irb result. >> Regards >> *From:* Lewis Lin <mailto:llin at polypaths.com> >> *Sent:* Thursday, June 30, 2011 9:58 PM >> *To:* ironruby-core at rubyforge.org <mailto:ironruby-core at rubyforge.org> >> *Subject:* [Ironruby-core] Access Top Level methods >> Hi, >> >> I am trying to access top level method from the class definition in >> IronRuby scripts. Example: >> >> def global_hi >> end >> >> class A >> def hi >> global_hi >> end >> end >> >> A.new.hi >> >> The script executed in ScriptEngine throws a NoSuchMethodError. >> I tried to ran the same code in iirb.exe It seems to behave the way I >> expected. But when I tried it in ir.exe, it throws the exception as well. >> I investigate a little more and found out >> >> irb(main):021:0> self.method(:global_hi) >> => #<Method: Object#global_hi> >> and >> in ir.exe as well as script engine >> >>> self.method(:xx) >> => #<Method: Object(#<Class:#<Object:0x0000058>>)#xx> >> >> Is there anyway to make the script behave like the one in iirb.exe? >> >> Thanks, >> Lewis >> >> ------------------------------------------------------------------------ >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core at rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core >> >> >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core at rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core > > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20110802/72e643fa/attachment-0001.html>