Как сделать JRuby 1.6 по умолчанию для Ruby 1.9?

Каков наилучший способ заставить JRuby работать в режиме 1.9 по умолчанию?

i.e, я хочу запустить rake test вместо jruby --1.9 -S rake test

Спасибо

Ответ 1

Используйте переменную среды JRUBY_OPTS. 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...

Ответ 2

Альтернативное решение - поместить следующую строку (и другие настройки) в файл ~/.jrubyrc

compat.version=1.9

Ответ 3

RVM позволяет теперь строить JRuby/Rubinius со стандартным режимом, установленным по умолчанию:

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

Суффикс -d19 может быть опущен, я использую его только для различия между режимами 1,8 и 1,9.

Режим --1.9 станет стандартным в следующих основных выпусках JRuby/Rubinius, поэтому вы можете использовать 1,8 с переключателем --1.8 rvm.

ОБНОВЛЕНИЕ 2012-05-25: Jruby 1.7.0.preview1 отсутствует, по умолчанию это 1.9!

Ответ 4

В Windows используйте set JRUBY_OPTS=--1.9.

Ответ 5

При использовании warbler для упаковки приложения в качестве военного файла, версию можно установить, выполнив:

warble config

который создает файл config/warble.rb. Этот файл содержит много комментариев о том, как настроить камышевки, и в частности:

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

Раскомментируйте вторую строку, удалив # и повторно упакуйте свою войну с помощью команды warble.

Ответ 6

Если вы создаете jruby из java:

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

(Благодаря bbrowning на канале #jrubyc irc)