[Ironruby-core] Differences between 1/ MRI and 2/ IronRuby+JRuby

Ivan Porto Carrero ivan at whiterabbitconsulting.eu
Sat Jan 30 08:17:06 EST 2010


AFAIK that shouldn't work in MRI either

+ C:\dev
» irb
irb(main):001:0> require 'erb'
=> true
irb(main):002:0>
irb(main):003:0* data = { :version => RUBY_PLATFORM }
=> {:version=>"i386-mingw32"}
irb(main):004:0>
irb(main):005:0* class Hash
irb(main):006:1>   def method_missing(method,*args)
irb(main):007:2>     if (keys.include?(method) && args.empty?)
irb(main):008:3>       self[method]
irb(main):009:3>     else
irb(main):010:3*       super
irb(main):011:3>     end
irb(main):012:2>   end
irb(main):013:1> end
=> nil
irb(main):014:0>
irb(main):015:0* x = 42
=> 42
irb(main):016:0> template = ERB.new <<-EOF
irb(main):017:0"   The value of x is: <%= version %>
irb(main):018:0" EOF
=> #<ERB:0x26a53e0 @safe_level=nil, @src="#coding:CP850\n_erbout = '';
_erbout.concat \"  The value of x is: \"; _erbout.concat(( version ).to_s);
_erbout.concat \"\\n\"\n; _erbout.force_encoding(__ENCODING__)",
@enc=#<Encoding:CP850>, @filename=nil>
irb(main):019:0> puts template.result(data.send(:binding))
NameError: undefined local variable or method `version' for main:Object
        from (erb):1
        from C:/Ruby/lib/ruby/1.9.1/erb.rb:753:in `eval'
        from C:/Ruby/lib/ruby/1.9.1/erb.rb:753:in `result'
        from (irb):19
        from C:/Ruby/bin/irb:12:in `<main>'
irb(main):020:0>

---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)



On Sat, Jan 30, 2010 at 2:09 PM, Thibaut Barrère
<thibaut.barrere at gmail.com>wrote:

> Hello,
>
> maybe someone can shed some light on that - the question is: is there a
> setting to make IronRuby works the same way MRI Ruby does by default for
> what I'm describing below ? I don't think it's a bug (but well maybe it is,
> just wondering).
>
> Using this script http://gist.github.com/290538 , MRI has a different
> behaviour than JRuby or IronRuby.
>
> The script will work just fine in MRI, whereas in JR/IR you'll get:
>
> (erb):2: undefined local variable or method `version' for main:Object
> (NameError)
>     from :1:in `eval'
>     from /opt/local/share/java/jruby/lib/ruby/1.8/erb.rb:743:in `result'
>     from binding-error.rb:19
>
> (erb):1: undefined method `version' for main:Object (NoMethodError)
>         from C:/IronRuby/lib/ruby/1.8/erb.rb:716:in `result'
>         from binding-error.rb:19
>         from :0:in `eval'
>
> It's just like values.send(:binding) is doing nothing.
>
> any thoughts ?
>
> thanks,
>
> -- Thibaut
>
> _______________________________________________
> 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/20100130/17d08055/attachment.html>


More information about the Ironruby-core mailing list