JRuby 1.6.4 из источника: неопределенный метод `to_i 'для Rational - PullRequest
0 голосов
/ 07 октября 2011
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 ]

1 голос
/ 07 октября 2011

Это не должно работать в режиме 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
0 голосов
/ 23 ноября 2011

Это ошибка в JRuby.

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

Билет содержит исправление, но оно не было объединено.

Если вы, как и я, сталкивались с этой проблемой только при установке гемов, попробуйте убедиться, что вы не используете флаг --debug. Если у вас возникла эта проблема с использованием установки JRuby, созданной из исходного кода, попробуйте предварительно скомпилированную версию с веб-сайта.

...