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,但是从源代码构建后我得到了错误。
答案 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安装遇到此问题,请尝试从网站上预编译的版本。