JRuby 1.6.4 from source:undefined方法`to_i'用于Rational

时间:2011-10-06 21:16:32

标签: jruby

irb(main):001:0> test = (0/1).rationalize
=> (0/1)
irb(main):002:0> test.to_i
NoMethodError: undefined method `to_i' for (0/1):Rational
        from (irb):2:in `evaluate'
        from org/jruby/RubyKernel.java:1093:in `eval'
        from org/jruby/RubyKernel.java:1419:in `loop'
        from org/jruby/RubyKernel.java:1205:in `catch'
        from org/jruby/RubyKernel.java:1205:in `catch'
        from C:\Development\jruby-1.6.4\bin\irb:13:in `(root)'
irb(main):003:0>

当正常安装时,这适用于JRuby 1.6.4,但是从源代码构建后我得到了错误。

2 个答案:

答案 0 :(得分:1)

这在1.8模式下不起作用。

$ ruby -e 'p (0/1).rationalize.to_i'
-e:1: undefined method `rationalize' for 0:Fixnum (NoMethodError)
$ jruby -e 'p (0/1).rationalize.to_i'
NoMethodError: undefined method `rationalize' for 0:Fixnum
  (root) at -e:1

另一方面,在1.9模式下,它应该按预期工作:

$ ruby1.9 -e 'p (0/1).rationalize.to_i'
0
$ jruby --1.9 -e 'p (0/1).rationalize.to_i'
0

答案 1 :(得分:0)

这是JRuby中的一个错误。

https://jira.codehaus.org/browse/JRUBY-6142

故障单包含修复程序,但尚未合并。

如果像我一样,你在安装宝石时只遇到这个问题,请尝试确保你没有使用--debug标志运行。如果您使用从源代码构建的JRuby安装遇到此问题,请尝试从网站上预编译的版本。