2012-06-04 77 views
7

因此,我爲每個rails項目創建了一個單獨的rvm gemset。他們都使用相同版本的紅寶石1.9.3爲什麼RVM會爲不同的gemset安裝重複的gem?

這會導致bundle install爲兩個項目完全安裝一組全新的寶石。如果其他項目具有與其他gemset中安裝的gem完全相同的版本,則無關緊要。我猜這對我來說是預期的行爲,但它似乎是硬盤空間和帶寬的低效使用。

我知道我可以手動將其中的一些寶石,以一個全球性的寶石,但似乎有些單調乏味,我和亦不易斷裂,如果我的依賴某個特定項目而改變。

有沒有更好的方式來整理東西,或者當寶石版本已安裝RVM自動檢測,只需使用該副本?

還是有更好的替代RVM,我應該使用。

回答

5

這是設計。 Gemsets允許您完全隔離所使用的庫,因此您不會在項目之間發生意外的交互。如果你不需要隔離,你可以只使用一個解釋無寶石:

rvm use 1.9.3 

如果有你在所有項目中使用的一些寶石,只需切換到全球寶石的解釋:

rvm use [email protected] 

gem install常見的寶石,然後他們不會重新安裝每個項目了,當你在一個寶石。

雖然gemsets在帶寬或HD空間方面肯定效率不高,但它們非常方便,因爲您可以輕鬆地消除項目的所有依賴關係,並隨時從頭開始重新編程。他們還徹底消除了意外更改版本的依賴關係。如果你不喜歡寶石套裝,在你的Gemfile中正確指定版本可以讓你在沒有寶石套裝的情況下獲得相當好的效果。

至於替代品,rbenv是我要檢查的主要一個。

相關問題