2012-01-15 48 views
0

我已經經歷了幾個Q & A的位置在這個問題上閱讀,但我仍然感到困惑。我是linux的新手,並且是編程新手,所以請記住這一點。很難理解RVM,寶石,和一般的Ruby on Rails環境設置

我知道Ruby Gems與apt-get類似。這是一個包管理器 - 正確嗎?

所以,如果我想安裝或刪除的寶石,我可以通過一個命令做到這一點,如:須藤寶石安裝{寶石名稱}

那麼那麼,什麼是RVM?我爲什麼要使用它? Ruby Gems不會做RVM的功能嗎?那麼爲什麼Ruby Gems會與RVM一起安裝?

此外,在項目的Gemfile中指定的寶石時,然後用捆綁更新,等等。這是下載的寶石只能到該項目,或將它們現在可以在所有項目中可用?

另外,什麼是$ PATH?我不太瞭解它,所以當我閱讀它時,我對什麼是正確的$ PATH感到困惑,如果我應該做什麼來管理$ PATH中的引用,等等,可以有人解釋或指向任何適合初學者的資源?

最後,我使用的各種教程,和他們不同的版本,一切從紅寶石到Rails到寶石。 a)我應該修改我的環境以匹配他們使用的版本嗎? b)一旦我完成了一個教程,我是否應該單獨留下所有版本,還是應該嘗試將所有內容升級到最新最好?

這是令人困惑的,因爲如果我在教程的版本級別放下一切,然後我覺得我停留在過去。雖然如果我升級到最新,最好的,我覺得事情已經全部轉向我,我不知道如何使用我學到的所有技巧和竅門。

非常感謝您花時間幫忙。乾杯。

回答

2

這個問題非常廣泛,所以我選擇試圖平衡明確性和簡潔性。如果有人發現什麼不對的答案,請告訴我會直線上升坦白吧:)

RVM是一個Ruby版本管理。假設一些項目可能需要運行ruby 1.9,另一個傳統項目可能需要1.8。 RVM允許您同時安裝兩個安裝,而不是擁有一個權威的系統級版本的ruby。這有助於安裝更高版本的Ruby,而不用擔心破壞任何內容,或者干涉其他用戶帳戶的Ruby版本要求(因爲通常在用戶級別,在主目錄中安裝RVM)。這甚至可以讓你在沒有任何擔心的情況下試用紅寶石的最新版本,因爲你總是可以輕鬆地切換回來。

當您安裝一個寶石,它一般也可供你到處是紅寶石安裝提供給你,所以在任何項目。當您在Gemfile中指定寶石時,基本上說,不管您安裝的任何寶石及其版本如何,項目的都需要版本2.2的gem x,版本3.1的y和版本1.1的z。如果您還沒有安裝它們的寶石,如果您使用的不是這些版本,則會安裝它們。

Path是一個environment variable,它允許操作系統在調用它們時知道去哪找程序。如果在終端中鍵入someapp,操作系統如何知道someapp是哪裏?那麼它會在$ PATH中提供的任何目錄中搜索它。通過在shell中執行echo $PATH,可以查看路徑中的內容。

至於各種版本的紅寶石,這讓我回到了RVM的原因。你可以,如果你想安裝他們使用的ruby版本,然後在你的Gemfile中明確說明教程使用的gem版本,你應該沒問題。您可以安裝不同版本的gem,並且可以使用RVM安裝不同版本的ruby。

就我個人而言,我會建議朝着最新版本的一切工作,以便它保持相關。例如,使用Rails 2的教程的工作會適得其反,因爲當它變爲3時會發生很大變化,並且會從3變爲3.1以上等等。如果可能,請使用最新版本,或至少了解這些細微差別(基礎材料往往保持大致相同),以免你使用的教程比較老,只能用最新版本的各種工具在你自己的項目上工作,而沒有它的工作。

簡單的解決您的難題:拋棄過時的教程。在那裏有大量的資源,你一定會找到最新的材料。最糟糕的情況,過時的材料通常以評論的形式提供社區支持,其中陳述了某些東西的版本與其相應的最新版本之間的變化。例如。 「請記住,哈哈。在3.1版中更改爲lol.wut」

+0

這有助於很多。因此,如果沒有RVM,我將無法擁有不同版本的寶石?另外,我將如何使用RVM切換ruby版本 - 這也是在Gemfile中指定的內容? – Nathan 2012-01-15 08:39:52

+0

如果沒有RVM,您仍然可以擁有不同版本的寶石。在Ruby版本之間切換取決於RVM。我建議你看看有關RVM的教程以獲取更多信息,這非常簡單。也許[this](http://beginrescueend.com/rvm/basics/)。你可以用'rvm list'來列出安裝,'rvm use'切換到一個''rvm install'來安裝特定的版本,等等。 – 2012-01-15 10:47:17

+0

好的,謝謝。現在越來越清楚了。 – Nathan 2012-01-15 12:01:52

0

我可以理解這是令人困惑的,RubyGems就像您編寫包管理器一樣。 RVM是一個工具,可以在系統上安裝好幾個ruby版本,並且可以在它們之間輕鬆快捷地進行安裝。

如果您使用各種教程,並且它們的版本從Ruby到Rails到Gem的版本不同,您可以(如果您想)爲您使用的版本創建RVM Gemset。然後,您將爲項目中的Gems Bundler創建一個沙盒。

Bundler是您編寫管理應用程序所依賴的Gems的工具。在Bundler之前的日子裏,找出應用程序所依賴的寶石可能是一件麻煩事。現在Bundler爲你做這個。

Bundler和RVM都是非絕對必需使用的工具,但它們將幫助您。我個人不再使用RVM。這是我口味中的一個怪物,所以我使用rbenv代替。

關於哪些版本的Rails使用我同意你應該嘗試使用3.1版本,如果可能的話,但如果你找到一些使用Rails 3.0的示例應用程序,你不需要升級它。你也不需要運行絕對最新版本的Rails。 Rails 3.1有很多錯誤修復,最新的Rails 3.1.3可能沒有。

+0

感謝Bandola,這有助於。 – Nathan 2012-01-15 12:01:42