2011-05-24 25 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

相關問題