2011-05-24 30 views
3

我希望RUBYOPT=-r openssl仅适用于使用Ruby 1.9.x的我的gemsets。 如果我在全球范围内设置了这个集合,Ruby 1.8.x会抱怨“RUBYOPT中的非法切换...”。如何为特定的RVM版本设置RUBYOPT?

谢谢。

+0

我听说的JRuby也检查一个单独的环境变量,但我不能谷歌它是什么。 – 2011-05-24 23:30:26

回答

5

~/.rvm/hooks/after_use,提出:

if echo $rvm_ruby_version | grep -q '1.9'; then 
    export RUBYOPT='-r openssl' 
else 
    export RUBYOPT= 
fi 
+0

谢谢。很好的答案。 注意:我没有明确地使用gemset和RVM USE ...我依靠.rvmrc来切换。但是.rvmrc不会使用'use'来切换,所以实际上并不会触发after_use钩子。我想我可以改变.rvmrc来'使用'而不是它在做什么。任何其他想法? – 2011-05-25 15:55:21

+0

这不依赖于gemsets甚至是明确的使用,隐式使用也会触发它(例如'rvm 1.9.2')。请记住.rvmrc只是一个shell脚本。我刚刚在一个项目特定的.rvmrc中用'rvm 1.9.2'进行了测试,它的工作原理是一样的。也许再次尝试使用新的终端,如果它仍然失败,请在您的.rvmrc中加入一些调试“echo”,并确保它正在运行。 – gtd 2011-05-25 17:33:49

+0

再次感谢。我看到项目.rvmrc正在运行,当我改变目录时(放入回声)。我在after_use中加入了一些回声,并确认它没有被我的.rvmrc设置gemset的方式调用: if [[-d“$ {rvm_path: - $ HOME/.rvm}/environments”\ && -s“$ {rvm_path: - $ HOME/.rvm}/environments/[email protected]”]];然后 \。 “$ {rvm_path: - $ HOME /.rvm}/environments/[email protected]” else ... 我确认它没有运行echo和env都没有运行不显示RUBYOPT。如果我将rvmrc更改为rvm使用...它可以工作。 – 2011-05-25 19:02:18

相关问题