Руби против JRuby: Время - PullRequest
       7

Руби против JRuby: Время

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

У меня есть веб-приложение, которое работает, в основном, с MRI Ruby и JRuby. Но ...

Когда я использую МРТ, я могу это сделать.

> rails console
irb(main):001:0> a=Time.new(1,1,1,1,1)
=> 0001-01-01 01:01:00 -0500

т.е. Создает новый объект Time на указанное время.

Когда я переключаюсь на JRuby, я делаю это

> rails console
irb(main):001:0> a=Time.new(1,1,1,1,1)
ArgumentError: wrong number of arguments (5 for 0)
     from (irb):2: in `evaluate`
     from org/jruby/RubyKernel.java:1088 in `eval`
     from /home/user/.rbenv/versions/jruby-1.6.4/lib/ruby/1.8/irb.rb:158 in `eval_input`
     from /home/user/.rbenv/versions/jruby-1.6.4/lib/ruby/1.8/
....

Как я могу создать объект времени в JRuby с указанием года, месяца, дня, часа и минут, которыми я управляю? Если да, может ли это работать и с MRI Ruby?

Не знаю, связано ли это, но

irb(main):002:0> RUBY_VERSION
"1.8.7"

Может быть, моя проблема в том, что я нахожусь в режиме 1.8.7? Если так, как мне переключить мою установку rbenv / jruby-1.6.4, чтобы она действовала как RUBY_VERSION = 1.9.2?

1 Ответ

7 голосов
/ 20 октября 2011

Да, это связано с RUBY_VERSIONВам нужно, чтобы JRUBY был в режиме 1.9.Вы можете установить это через JRUBY_OPTS

Попробуйте:

export JRUBY_OPTS=--1.9

или это (в Windows):

set JRUBY_OPTS=--1.9

Пример сеанса (Windows):

> set JRUBY_OPTS=--1.9
> jirb
irb(main):001:0> a=Time.new(1,1,1,1,1)
=> 0001-01-01 01:01:00 +0918
...