Ruby vs JRuby:Time.new

时间:2011-10-20 02:14:10

标签: ruby jruby ruby-1.9.2

我有一个网络应用程序,大多数情况下使用MRI Ruby和JRuby。但...

当我使用MRI时,我可以这样做。

> 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中创建一个Time对象,其中包含我控制的年,月,日,小时和分钟?如果是这样,这可以用于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 个答案:

答案 0 :(得分:7)

是的,它与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