2013-03-07 60 views
7

我正在尋求一種更簡化和可靠的方法,以在操作系統更新後保持我的rvm環境完好無損。我使用Mountain Lion,rvm 1.18.16和自制軟件,它有readline,gettext,libxml2,libxslt,qt,gtk + - 通常爲我打破的寶石是nokogiri和水豚 - webkit系統更新後更新所有RVM紅寶石和寶石的最佳方式?

更新後兩次Mountain Lion和XCode,我的本地擴展寶石和Ruby已經遭到破壞,我不得不花時間讓所有的東西重新開始工作。我不得不懷疑我是否按照最佳做法在此類系統更新後獲取所有rvm組件。

通常會發生的事情是,本機擴展的gem正在鏈接不再可用的舊庫,特別是與圍繞Mountain Lion的libxml問題。下面是我爲了讓系統在所有項目中恢復聯機而採取的基本步驟(我在rvm下安裝了大約8個Ruby版本,所以這很乏味!)。

首先,通過App Store更新Mountain Lion和XCode。

其次,更新與自制程序:

brew update 
brew upgrade 

然後列出你的紅寶石,並開始重新編譯每一個與...

rvm list 
rvm reinstall ruby-1.9.2-p290 
rvm reinstall ruby-1.9.3-p392 
... 

注:我也嘗試:

rvm all do reinstall 

但是這給了我這個錯誤:「重新安裝:找不到命令」

接下來,通過每個紅寶石步驟和執行上的寶石原始的(這有重新編譯所有的原生擴展寶石的副作用):

rvm use ruby-1.9.3-p392 
gem pristine --all 

最後,進入到每一個項目,並執行以下操作:

bundle install 

我不確定最後一步是否是絕對必要的 - 有些項目似乎沒問題,有些則沒有,但運行這似乎清理了最後剩下的問題。

當然有更簡化的方法來管理這個過程!我只用了兩個月的Mountain Lion和rvm,但在那段時間裏,兩次系統更新已經使我大部分工作的Ruby環境都無法正常工作。我安裝了很多Ruby版本,因爲我擔任顧問,遇到很多開發環境,所以我真的很想把這個過程放到一個容易重複的過程中。

有什麼想法?以上可以進一步改進嗎?

+0

從IRC上的mpapis #rvm:如果您沒有對bundle使用--path或--deployment命令選項,那麼rvm全部重新安裝也將清除每個項目捆綁的gem的問題。 – 2013-03-08 16:43:06

回答

11

你可以這樣做:

rvm reinstall all 

追加--force跳過問題。

注意,會做完全重新安裝,包括每個寶石gem pristine,你需要注意的輸出,因爲它會通知您未能執行pristine行動的寶石。

+1

有趣!當你沒有任何參數運行rvm時,甚至沒有將它列爲Action。它也顯然不是在https://rvm.io/rubies/installing/頁面上的記錄命令(也不是我檢查過的其他命令)......所以這就引發了問題......它在哪裏記錄下來? – 2013-03-08 14:55:20

+1

是的,這是實驗功能,我錯過了文檔,將嘗試將其添加到幫助 – mpapis 2013-03-08 15:23:27

+1

感謝您對#irc的輸入。我已經爲此提交了票證 – 2013-03-08 16:41:00