2011-10-06 70 views
17

我在我的電腦上有兩個項目: - 一箇舊的Rails 2.3應用程序需要rubygems 1.6,不能在rubygems 1.8下運行; - 需要使用rubygems 1.8並且不能在rubygems 1.6下運行的新應用程序。使用rvm的rubygems的多個版本?

每個項目都有自己的RVM寶石,但我無法弄清楚如何給他們不同的版本RubyGems的本身:

  • 寶石更新--system [版本]導致寶石--version捐贈兩者都有相同的答案;
  • rvm gemset [版本]具有相同的結果。

如何在一個項目中運行rubygems 1.6.2,在另一個項目中運行1.8.11?


爲了澄清,這是我想要做的

  • 在目錄中的,具有與選擇一個寶石命令和RubyGems的1.6.2
  • 在目錄B中.rvmrc ,有一個帶選擇gemset B和rubygems命令的.rvmrc最新版本
  • 有兩個終端會話同時打開,一個在目錄A中,另一個在目錄B中
  • 型「寶石--version」在目錄中的,看到「1.6.2」
  • 型「寶石--version」目錄B和看到「1.8.11」

回答

17

正確的方法是創建一個名爲不同(-N)安裝你想要的紅寶石根據你想如

rvm --install use 1.9.2-nrg186 && rvm rubygems 1.8.6 && gem --list 
rvm --install use 1.9.2-nrg1810 && rvm rubygems 1.8.10 && gem --list 

其原因的rubygem安裝版本,並將其命名是,你只能有1個versio在任何給定的時間裏都會有rubygems活動。這也是由於每個ruby都定義了一個與已知或預期可以使用的版本的特定rubygems版本的依賴關係(不管它是否可以與另一個版本兼容)。

這是處理多個rubygems需求並消除潛在問題的預期方法。有關詳細信息,請參見https://gist.github.com/1273035

9

RVM有一個新功能這個:

使用「rvm ruby​​gems 1.6.2」來選擇該版本的rubygems。

rvm rubygems 1.6.2 

https://rvm.io/rubies/rubygems/(參見: 「RubyGems的CLI API」 實現頁面的底部)

http://groups.google.com/group/rubyversionmanager/browse_thread/thread/e39fc7827d2d22e8

+0

這並不回答這個問題,即如何使用不同版本的'gem'可執行文件,而不是不同版本的各種寶石。 –

+0

剛剛意識到這一點,並改變了我的答案 – Tilo

+1

看起來不錯。測試一下,你可以把它放在一個'.rvmrc'文件中,沒有任何問題。 –