2011-08-11 31 views
6

我開始編寫一個使用Rails 2編寫的項目。它看起來需要一箇舊版本的Rake,它位於Ruby 1.8.7的全局gemset中。我想避免爲這個應用程序卸載全局1.8.7 rake。RVM:創建一個不能從全局繼承的gemset?

無論如何我可以創建一個會忽略全局gemset的gemset嗎?

編輯:我想避免的最明顯的解決方案是從全局gemset中卸載gems。在我的特殊情況下,我開始了一些遺留應用程序的工作。它打破了像0.9.3耙寶石和我的調試寶石(awesome_print,hirb,wirb等)。儘管我目前的解決方案(在下面的評論中)是一種破解,但它似乎是我想要的最少量的工作。我希望有一些我不知道的gemset異常命令。

+0

我目前的解決方案:安裝下一個最新的補丁程序。目前這是1.8.7-p299。我的主要是1.8.7-p352。這適用於p299和p352口譯員不共享全局gemsets。不過,這感覺非常像黑客攻擊,所以如果可能的話,我仍然希望看到更清晰的解決方案。 –

回答

-2

是的,你可以。您需要運行rvm gemset create {gemset_name}。 這將創建一個空的gemset,你將不得不安裝所有的寶石與他們的版本(只是gem install ...,沒有sudo)。

+0

我剛剛運行'rvm gemset create {test}',{test} gem仍繼承全局gemset中的gem。 –

+0

它不應該......沒有括號運行它 –

+0

我認爲你錯了。 RVM爲您安裝的每個解釋器創建@global gemset,即[email protected]。安裝在此解釋器中的任何gemset都將擁有自己的寶石*以及全局gemset中的寶石。我想要做的是安裝一個忽略全球一個或多個寶石的寶石。 –

1

您應該能夠在新創建的gemset上運行rvm gemset empty test以刪除所有gem(本地和全局),然後bundle install應該只安裝gemfile gems。

+1

這很有用,但'rvm gemset empty'不會刪除全局gem,除非我先切換到全局gemset。這是一個比我目前所用的意大利麪條更少的選項,所以很有趣。對於需要相同核心寶石/版本的N個項目(即rake,ruby-debug等),我必須重新安裝這N個項目的寶石,這樣我就不會將它們放入1中。 –