Как я могу использовать JRUBY_OPTS с RVM? - PullRequest
10 голосов
/ 27 ноября 2011

Кажется, что идиоматический способ предоставления флагов JRuby в проекте Rails на основе RVM состоит в том, чтобы установить переменную окружения JRUBY_OPTS или PROJECT_JRUBY_OPTS, причем последняя, ​​возможно, выполняется автоматически, так как я вижу, что могу раскомментировать эту строку из каталога моего проекта.rvmrc:

PROJECT_JRUBY_OPTS=( --1.9 )

Однако эта строка, похоже, ничего не делает, и если я устанавливаю переменные среды, RVM фактически сбрасывает их.

Итак, как мне это сделать??

(Обратите внимание, что у меня есть это в нижней части моего файла .bashrc, как я считаю, я должен использовать rvm:)

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.

Пример:

$ JRUBY_OPTS=--1.9 jruby -v
jruby 1.6.5 (ruby-1.9.2-p136) (2011-10-25 9dcd388) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_27) [darwin-x86_64-java]

$ export JRUBY_OPTS=--1.9
$ jruby -v
jruby 1.6.5 (ruby-1.8.7-p330) (2011-10-25 9dcd388) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_27) [darwin-x86_64-java]
$ env | grep JRUBY_OPTS
[empty result]

Ответы [ 5 ]

15 голосов
/ 04 декабря 2011

эта опция была проанализирована только с помощью крюка jruby nailgun, я добавил новый хук для разбора только этой опции (без ng):

rvm get head
chmod +x ${rvm_path}/hooks/after_use_jruby_opts

и он должен работать при входе в каталог с этой опцией

13 голосов
/ 03 декабря 2011

Я положил export JRUBY_OPTS="..." в моем проекте .rvmrc, внизу файла. Это работает для меня.

export JRUBY_OPTS="--1.9 -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC -J-XX:MaxPermSize=256m -J-Xmx1024m"

$ jruby -v
jruby 1.6.5 (ruby-1.9.2-p136) (2011-10-25 9dcd388) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_29) [darwin-x86_64-java]
5 голосов
/ 01 августа 2014

Поскольку вы используете rvm, просто создайте файл .ruby-env в папке вашего каталога. Внутри файла вы можете определить свой собственный env Как:

JRUBY_OPTS=-Xcext.enabled=true
5 голосов
/ 03 декабря 2011

@ mpapis определил проблему и предоставил исправление.Вот некоторый дополнительный фон.TL; DR: используйте PROJECT_JRUBY_OPTS и хуки jRuby.

jRuby использует JRUBY_OPTS для настройки поведения jRuby.

RVM поддерживает PROJECT_JRUBY_OPTS с двумя предоставленными файлами хуков (в настоящее время * 1008)* и after_use_jruby_opts).Если они включены, делая их исполняемыми, хуки используют функции библиотеки сценариев jruby_options_append и jruby_options_remove для добавления / удаления параметров в PROJECT_JRUBY_OPTS в / из JRUBY_OPTS.

Итак, у вас есть два варианта.

Если вы устанавливаете последнюю версию RVM, вы можете свернуть свой собственный .rvmrc для каждого проекта, а также можете устанавливать переменные среды и запускать команды, как и следовало ожидать.Никаких дополнительных шагов не требуется.

$ cat >> ~/tmp/.rvmrc
export JRUBY_OPTS='--1.9'
^D

А затем:

$ cd ~/tmp
$ env | grep OPTS
JRUBY_OPTS='--1.9'

Или вы можете включить ловушки jruby, сгенерировать .rvmrc и настроить его:

$ chmod +x ${rvm_path}/hooks/after_use_jruby_opts # or after_use_jruby

Тогда:

$ cd ~/tmp
$ rvm --rvmrc --create jruby@projectxyz # edit the resulting .rvmrc, uncomment PROJECT_JRUBY_OPTS

А теперь:

$ cd ~/tmp
$ env | grep OPTS
JRUBY_OPTS='--1.9'

Между этими двумя подходами есть тонкие различия.

При первом подходе изменения в JRUBY_OPTS сохраняются, даже если вы возвращаетесь из каталога проекта.При втором подходе параметры, специфичные для проекта, удаляются из переменной среды JRUBY_OPTS при переходе из каталога проекта.

Аналогично, первый случай перезаписывает JRUBY_OPTS значением в .rvmrc,в то время как второй случай разумно добавляет информацию, специфичную для проекта.

@ paul-biggar, к сожалению, мне не удалось воспроизвести проблему, когда RVM не установлен JRUBY_OPTS.

2 голосов
/ 29 марта 2012

Добавьте эту строку в ваш файл .bashrc

export JRUBY_OPTS=--1.9 

у меня нормально работает

...