似乎在基于RVM的Rails项目中为JRuby提供标志的惯用方法是设置环境变量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]
答案 0 :(得分:15)
此选项仅使用jruby nailgun钩子进行解析,我添加了一个新钩子来解析此选项(无ng):
rvm get head
chmod +x ${rvm_path}/hooks/after_use_jruby_opts
并且在使用此选项输入目录时应该有效
答案 1 :(得分:13)
我将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]
答案 2 :(得分:5)
@mpapis确定了问题并提供了修复程序。这是一些额外的背景。 TL; DR:使用PROJECT_JRUBY_OPTS
和jRuby挂钩。
jRuby使用JRUBY_OPTS
来配置jRuby的行为。
RVM支持PROJECT_JRUBY_OPTS
两个提供的挂钩文件(目前为after_use_jruby
和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
环境变量中删除特定于项目的选项。
同样,第一种情况用.rvmrc中的值覆盖JRUBY_OPTS
,而第二种情况智能地附加项目特定信息。
@ paul-biggar,遗憾的是我无法复制RVM未设置JRUBY_OPTS
的问题。
答案 3 :(得分:4)
由于您正在使用rvm,只需在目录文件夹中创建一个.ruby-env文件。 在文件中,您可以定义自定义环境。 像:
JRUBY_OPTS=-Xcext.enabled=true
答案 4 :(得分:2)
将此行添加到.bashrc文件
export JRUBY_OPTS=--1.9
它对我来说很好用