如何使JRuby 1.6默认到Ruby 1.9?

让JRuby默认运行在1.9模式下的最佳方式是什么?

即,我想运行rake test而不是jruby --1.9 -S rake test

谢谢

使用JRUBY_OPTS环境variables。 JRUBY_OPTS包含一个参数列表,该列表被添加到在命令行中指定的任何参数。

例如(在Linux上):

 $ jruby -v
 jruby 1.6.0.RC1(ruby 1.8.7 patchlevel 330)(2011-01-10 769f847)(Java HotSp ...
 $ export JRUBY_OPTS =  -  1.9
 $ jruby -v
 jruby 1.6.0.RC1(ruby 1.9.2 trunk 136)(2011-01-10 769f847)(Java HotSpot(TM)
 $ export JRUBY_OPTS =  -  1.8
 $ jruby -v
 jruby 1.6.0.RC1(ruby 1.8.7 patchlevel 330)(2011-01-10 769f847)(Java HotSpo ...

另一种解决scheme是将下面的行(和其他设置)放在〜/ .jrubyrc文件中

 compat.version=1.9 

RVM现在允许构build默认模式下的JRuby / Rubinius:

 rvm install jruby-1.6.7-d19 --1.9 rvm install rbx-2.0.testing-d19 --1.9 

后缀-d19可以省略,我只用它来区分1.81.9模式的ruby。

--1.9模式将成为JRuby / Rubinius下一个主要版本的默认模式,因此您可以确保使用1.8和-1.8 rvm开关。

更新2012-05-25: Jruby 1.7.0.preview1已经出来了,默认是1.9!

在Windows中,使用set JRUBY_OPTS=--1.9来代替。

使用warbler将应用程序打包为war文件时,可以通过运行以下命令来设置版本:

 warble config 

这会创build一个config/warble.rb文件。 这个文件包含很多关于如何configuration鸣鸟的评论,尤其是:

  # Set JRuby to run in 1.9 mode. # config.webxml.jruby.compat.version = "1.9" 

取消#注释第二行,用warble命令重新打包你的战争。

如果你从java创buildjruby:

 RubyInstanceConfig config = new RubyInstanceConfig(); config.setCompatVersion(CompatVersion.Ruby1_9); Ruby runtime = Ruby.newInstance(config) 

(感谢#jrubyc irc频道的bbrowning)