如何使 JRuby 1.6默认为 Ruby 1.9?

使 JRuby 在默认情况下以1.9模式运行的最佳方法是什么?

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

谢谢你

27980 次浏览

使用 ABc0环境变量。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...

在视窗中,使用 取而代之的是 set JRUBY_OPTS=--1.9

如果你正在用 java 创建 jruby:

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

(感谢 # jrubyc irc 频道的褐变)

另一种解决方案是在 ~/. jrubyrc 文件中放入以下代码行(和其他设置)

compat.version=1.9

RVM 现在允许使用默认设置的默认模式构建 JRuby/Rubinius:

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

后缀 -d19可以省略,我使用它只是为了区分 1.81.9模式的红宝石。

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

更新2012-05-25: Jruby 1.7.0. preview1出局,默认为1.9!

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

warble config

这个文件包含很多关于如何配置 warbler 的注释,特别是:

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

通过删除 #取消对第二行的注释,并使用 warble命令重新打包 war。