2011-06-17 42 views
4

請理解,我並不想抨擊RVM。我只想了解爲什麼它在Ruby社區中如此受歡迎。RVM在Linux上有什麼優勢?

似乎有兩個主要原因使用RVM--在不同版本的Ruby之間管理/切換,併爲每個項目管理特定的gemset。然而,似乎有在Linux上實現同樣的事情更清潔的方式:

  • 我可以通過 定期包管理器安裝在倉庫不同Ruby版本 ,或從源代碼構建 和安裝的軟件包。 我可以使用 update-alternatives(至少在Debian,Ubuntu,Fedora上)在不同版本之間切換。
  • 我可以使用Bundler來管理不同項目的 寶石套件,如this blog post中概述的 。

鑑於上述情況,我很困惑爲什麼我想用RVM來管理Ruby版本和寶石。使用bash腳本在我的系統上在軟件包管理器外部安裝軟件的想法讓人覺得很駭人,這種感覺被this blog post支持。

不是Mac用戶我在這裏完全猜測,但我認爲這可能是OS X在Ruby社區中非常流行。如果在OS X上沒有用於切換ruby版本的update-alternatives這樣的系統,RVM可能是最好的解決方案,並且這個想法也延續到linux上。就像我說的,這只是一個猜測。

那麼爲什麼RVM如此受歡迎,爲什麼我應該比Debian或Ubuntu上的常規軟件包管理器+ Bundler更喜歡它?

回答

3

如果您需要使用不同版本的Ruby和像我這樣的特殊Rails來管理許多項目(我有3個項目需要使用Rails 2.3.5,Rails 3.0.5和Rails 3.1 rc1),RVM是必要的解決方案。正如你可能知道Rails 2.3.x沒有捆綁器支持並使用舊的寶石,所以版本管理是使開發更容易的方法。我希望我能幫助你。

+0

您可以在Rails 2.3中使用Bundler並付出一定的努力:http://gembundler.com/rails23.html – coreyward 2011-06-17 13:49:32

+1

當您必須管理許多具有相同寶石但不同版本的項目時 - 請相信我 - 這很難 – bor1s 2011-06-17 13:50:45

3
  1. RVM是便攜式
  2. update-alternatives作品全球範圍內,RVM工作在殼/腳本方面 - 我想這是modyfying ENV路徑。現在想象在一臺服務器上有兩個應用程序:一個1.8.7和另一個1.9.2
  3. Ruby EE的使用需要手動安裝 - 使用RVM只需一個命令即可安裝它。
  4. 我在Debian中只有1.8.7或1.9.2的寶石混合寶石問題太多了。
  5. 簡單備份 - 只需複製.rvm dir。
  6. 一致的羣集(相同平臺) - 只需共享一個.rvm dir。