2011-10-20 30 views
1

我有一個網絡應用程序,其中大部分與MRI Ruby和JRuby一起工作。但是...Ruby vs JRuby:Time.new

當我使用MRI時,我可以做到這一點。

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

即它在指定的時間創建一個新的時間對象。

當我切換到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

HTTP: //stackoverflow.com/questions/4755900/how-to-make-jruby-1-6-default-to-ruby-1-9 – kreek

回答

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 
+0

謝謝凱文。那樣做了! –