Ruby 与 JRuby:Time.new

发布于 2024-12-10 18:36:21 字数 888 浏览 0 评论 0原文

我有一个网络应用程序,大部分可以与 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 ?

I have a web app which works, for the most part with MRI Ruby and JRuby. But...

When I am using MRI, I can do this.

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

i.e. It creates a new Time object for the specified time.

When I switch to JRuby I do this

> 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/
....

How can I create a Time object in JRuby with a year, month, day, hour, and minutes which I control? If so, can this work with MRI Ruby as well?

I don't know if this is related, but

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

Could my problem be because I'm in 1.8.7 mode? If so, how do I switch my rbenv/jruby-1.6.4 installation to act like RUBY_VERSION=1.9.2 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

謸气贵蔟 2024-12-17 18:36:21

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

Yes, it is related to the RUBY_VERSION
You need JRUBY to be in 1.9 mode.
You can set this through JRUBY_OPTS

Try this:

export JRUBY_OPTS=--1.9

or this (on Windows):

set JRUBY_OPTS=--1.9

Example session (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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文