2012-02-12 50 views
3

我有一個運行並安裝在JRuby上的應用程序。同樣的應用程序可以在Ruby 1.8.7以及開發中運行。我如何使用RVM在這些ruby之間切換?如何使用rvm和rvmrc文件爲同一項目使用兩種不同的ruby安裝?

我要尋找一個.rvmrc式的解決方案,使我可以說

rvm use .rvmrc_ruby 

rvm use .rvmrc_jruby 

到Ruby版本之間切換。我通常需要在Ruby和JRuby上測試相同的應用程序。

我想一個解決方案,我可以檢查,在這樣的設置,以Git和無需鍵入Ruby版本或寶石的名字,每次我需要切換運行這些東西。

+0

如果它在JRuby上運行在生產中,你爲什麼要用其他東西來測試它? – 2012-02-12 05:02:00

+0

因爲1.9.3開始快30秒 – mpapis 2012-02-12 07:27:52

回答

1

產生這兩個文件,並在.rvmrc寫:

source ./.rvmrc_${TEST_WITH:-jruby} 

那麼你就可以在你的shell寫:

export TEST_WITH=ruby 
cd . 

與恢復:

unset TEST_WITH 
cd . 
0

這似乎很傻。

首先,你爲什麼不費心去開發運行不同Ruby?如果是偶爾的試運行,以確保在不同的紅寶石,那麼好吧兼容性,但後來......

其次,你可能在你.rvmrcrvm use 1.8.7rvm use jruby - 即所發生的一切,當你.rvmrc文件運行。有什麼不好,只是實際輸入終端?它實際上是以下的個字符,而不是您給出的示例命令,並且您也獲得了製表符完成。如果你需要在shell之間保持一致,並且實際上必須讓.rvmrc反映出你想要的當前Ruby,那麼就改變這個文件。或者,如果你真的必須寫一個簡單的腳本來爲你做(說這就是所謂的changervmrc.sh):

#!/bin/bash 

echo "rvm use $1" > .rvmrc 

./changervmrc.sh jruby調用。您可以根據需要調整它以包括切換到特定的gemset。

相關問題