Pau*_*gar 10 jruby jrubyonrails rvm
似乎在基于RVM的Rails项目中为JRuby提供标志的惯用方法是设置环境变量JRUBY_OPTS或PROJECT_JRUBY_OPTS,后者可能是自动完成的,因为我看到我可以从项目目录中取消注释这一行.rvmrc:
PROJECT_JRUBY_OPTS=( --1.9 )
Run Code Online (Sandbox Code Playgroud)
但是,该行似乎什么都不做,如果我设置环境变量,RVM实际上取消了它们.
那么,我该怎么做呢?
(请注意,我在.bashrc文件的底部有这个,这是我相信我应该使用rvm :)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
Run Code Online (Sandbox Code Playgroud)
$ 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]
Run Code Online (Sandbox Code Playgroud)
mpa*_*pis 15
这个选项只用jruby nailgun钩子解析,我添加了一个新的钩子来解析这个选项(没有ng):
rvm get head
chmod +x ${rvm_path}/hooks/after_use_jruby_opts
Run Code Online (Sandbox Code Playgroud)
它应该在使用此选项输入目录时起作用
All*_*ner 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]
Run Code Online (Sandbox Code Playgroud)
@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
Run Code Online (Sandbox Code Playgroud)
然后:
$ cd ~/tmp
$ env | grep OPTS
JRUBY_OPTS='--1.9'
Run Code Online (Sandbox Code Playgroud)
或者您可以启用jruby挂钩,生成.rvmrc并自定义它:
$ chmod +x ${rvm_path}/hooks/after_use_jruby_opts # or after_use_jruby
Run Code Online (Sandbox Code Playgroud)
然后:
$ cd ~/tmp
$ rvm --rvmrc --create jruby@projectxyz # edit the resulting .rvmrc, uncomment PROJECT_JRUBY_OPTS
Run Code Online (Sandbox Code Playgroud)
现在:
$ cd ~/tmp
$ env | grep OPTS
JRUBY_OPTS='--1.9'
Run Code Online (Sandbox Code Playgroud)
这两种方法存在细微差别.
使用第一种方法,JRUBY_OPTS即使您导航回项目目录,更改也会持续存在.使用第二种方法,JRUBY_OPTS当您导航出项目目录时,将从环境变量中删除特定于项目的选项.
同样,第一种情况JRUBY_OPTS用.rvmrc中的值覆盖,而第二种情况智能地附加项目特定的信息.
@ paul-biggar,遗憾的是我无法复制RVM未设置的问题JRUBY_OPTS.
由于您使用的是rvm,因此只需在目录文件夹中创建一个.ruby-env文件。在文件中,您可以定义自定义环境。喜欢:
JRUBY_OPTS=-Xcext.enabled=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15248 次 |
| 最近记录: |