2011-06-22 29 views
10

爲什麼我應該/不應該使用RVM?RVM的好處

我是新來的ruby語言和服務器作爲一個整體。我在安裝使用RVM時遇到了一些麻煩......所以我現在不想使用它,但它似乎可能使安裝更容易?

我有興趣瞭解有關RVM的體驗以及您的想法,因爲它與維護服務器有關。

回答

10

即使您不想同時安裝多個版本,RVM也很有用。我是一個紅寶石愛好者(PHP日間:(),我沒有理由要使用舊版本,但我仍然使用RVM。

安裝紅寶石是一個痛苦。從包管理器至少在Ubuntu下)給你一個過時的版本,從默認設置改變安裝目錄,我什麼也沒有,但它的問題

所以你認爲,「我只是從源代碼構建它」。需要獲得大量的依賴和配置選項,通常我只是爲了發現我忘記啓用SSL支持或readline支持而構建了ruby。有一個完美的結構t版本的紅寶石。

我甚至沒有介紹RVM如何爲你管理多個ruby安裝,這是它的殺手級功能。如果你有這種需求,那麼真的沒有其他理智的解決方案。

+0

是的,我發現了這一點 - 恐怕我有一堆的紅寶石虛擬安裝,因爲我有點不知道我現在在做什麼。 :P –

+0

即使您不需要多個ruby安裝,也可能需要多個_gemsets_,模型示例是需要使用不同Rails版本的應用程序。 –

+0

@Mladen:帶捆綁器的Rubygems已經爲你做到了這一點。 Rubygems允許你保持同一個gem的多個版本,並且bundler允許你指定要加載的gem的版本。 – ryeguy

2

RVM很棒,因爲這可以讓您安裝不同的版本,而無需觸及系統的默認Ruby安裝。它與Python中的virtualenv很相似。

擁有RVM的另一個巨大優勢是gemsets - 您可以創建與ruby的版本和補丁級別相同的許多gemset。

我吹捧了它的一些virtues here,你也應該see this blog post

在維護一個服務器方面 - 比如說乘客安裝;請記住,Passenger是作爲一個寶石安裝的,所以使用rvm的好處在於,您可以安裝多個安裝的乘客,綁定到不同版本的ruby。當然,通常情況下,您將一次運行一個版本的Passenger,儘管可以讓Passenger運行在不同的Ruby版本上。

+0

您可以在不同的gemsets中運行不同的應用程序。但是目前,所有這些gemset必須是完全相同的ruby。 –

1

我對不同的項目使用不同的Ruby版本(這就是.rvmrc非常方便的地方)。有些部署環境對1.9感到滿意,而有幾個使用1.8的傳統服務器出於某些原因。另外,偶爾我想推出一個特定版本的ruby來比較它們的工作方式。 RVM爲我做了這一切。

1

當你第一次習慣於Ruby時,它可能不是完全必要的。也就是說,它所做的是讓你在未來取得成功。因爲一旦你被迷住了,你最終可能會需要從MRI 1.8.x移動到1.9.x的項目。或者從1.9.x到JRuby 1.6.x.我的經驗是這種情況不規律地發生,但是當它發生時,RVM就無法替代。

除此之外,我經常使用的另一個最大功能是分割一個特定發佈的功能。所以我可以有一個「穩定」寶石的環境,以及一個「不穩定」寶石的環境。例如,雖然Rails 3.1已經處於發佈候選模式,但我有1.9.2的一個主工作區和Rails 3.1.rc的單獨空間。寶石上1.9.2。這使得我可以繼續開發我的主要Rails 3.0東西(在CLI中使用一個命令),而不必爲了使用較舊的文件而指定適當的rails bin文件的完整文件路徑。

0

如果您使用的是基於Debian的平臺,其中打包程序/策略會導致非常糟糕的默認安裝,那麼使用rvm會有更好的體驗。