【问题标题】:Ruby vs JRuby: Time.newRuby vs JRuby:Time.new
【发布时间】:2011-10-20 02:14:09
【问题描述】:

我有一个可以运行的网络应用程序,大部分情况下与 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 一样?

【问题讨论】:

标签: ruby jruby ruby-1.9.2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 2013-03-13
    • 2018-02-11
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多