∞RVM 的基礎
想知道為什麼您應該 使用 RVM? 首先,RVM 不僅能輕鬆且一致地安裝多個 Ruby 解譯器/執行時間,還提供許多功能,例如 gemsets,而這些功能通常不受大多數 Ruby 安裝的支援。
RVM 也讓您能以不會搞亂您現有 Ruby 安裝的方式(除非您告訴它這麼做)使用不同的 Ruby,還能讓您在不同的終端機中同時執行多個不同的 Ruby!
∞開始使用
首先,您必須確保您已 安裝 RVM。
∞安裝後設定
當您透過 ssh 或本機 shell 帳戶登入時,RVM 將會作為函式載入。如果遇到問題,請使用下列連結之一作為設定終端機的參考
對於非互動式 shell,RVM 將只會新增至 PATH,不會載入。這表示在此模式中無法使用 Ruby,但有簡單的方法可以載入 Ruby
source $(rvm 1.9.3 do rvm env --path)
然後,當您登入或產生 shell 時,這將會自動載入 RVM,不論 shell 類型為何。很方便,對吧?
您現在應該開啟一個新的 shell 並開始使用 rvm。
關於 .bash_profile 警告的說明。在少數 Linux 發行版中,預設的 .bash_profile(偶爾是 .bashrc)包含下列程式碼列
[ -z "$PS1" ] && return
條件 [ -z "$PS1" ]
在字串 "$PS1" 長度為零(非互動式 shell)時為真。rvm 需要載入互動式和非互動式 shell,這就是強烈建議變更此檔案的原因。
首先,請確認前一步驟已成功執行,並且已正確載入 rvm。為此,並驗證 RVM 已載入作為 shell 函數,請執行:type rvm | head -1
∞自動安裝相依性
安裝 ruby 時,RVM 可能需要使用 sudo
來安裝相依性。請確定呼叫 RVM 指令的使用者,特別是 rvm install
,擁有 sudo
權限。
如果您希望讓沒有 sudo
權限的使用者能夠執行 RVM 指令,您需要關閉自動安裝相依性
rvm autolibs disable
不過,這表示您必須手動管理相依性。
∞安裝 ruby
假設這顯示「rvm is a function」,您就可以繼續了。舉例來說,要安裝並使用 Ruby 2.1.1,您可以執行
$ rvm install 2.1.1
使用 RVM 成功安裝 Ruby 詮釋器後,您可以執行 use 指令來使用它。例如,對於 Ruby 2.1.1
$ rvm use 2.1.1 $ ruby -v ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0] $ which ruby /Users/rys/.rvm/rubies/ruby-2.1.1/bin/ruby
注意:對於新使用者來說,如何切換 Ruby 版本一直有些混淆。不需要在 rvm list
輸出中,已安裝 ruby 的清單中,包含「ruby-」部分。這只用於表示不同種類的 ruby,例如 REE ruby 和 MRI ruby 等。不過,請注意,當您在 MRI 或 Rubinus 或 REE 之間切換時,然後您需要使用 ree|ruby|rbx 部分。當您想要切換時,只要使用版本號碼和任何修補程式等級即可。如果是 -head 版本,請使用完整字串,因為它不包含數字。這也適用於設定預設 Ruby。以下是我的意思的範例
# This changes to MRI Ruby 2.1.1 and sets it as your default. $ rvm --default use 2.1.1 # The following changes to ruby-head (MRI Ruby) but does _not_ # set it as your default Ruby. $ rvm use ruby-head # This changes to jruby-head and _does_ set it as # your default ruby $ rvm --default use jruby-head # You use the following full form if, for example, # you previously had a different Ruby selected (maybe JRuby) $ rvm use ruby-2.1.1 # This changes to whatever RVM recognizes as the most current # MRI Ruby 2.1.1, and sets it as default. $ rvm --default use 2.1.1
注意:如果您只使用主要。次要版本號碼,RVM 會在 $rvm_path/config/db 中檢查並使用該主要。次要版本中最新修補程式等級。例如,如果您只安裝了 2.0.0-p451,而 2.0.0-p481 是最新版本,RVM 會嘗試為您下載、安裝並設定 2.0.0-p481 作為您的預設 2.0.0。這種行為可能是您想要的,也可能不是。如果不是,請務必在您指定 RVM 在設定預設時應使用哪個 Ruby 時,包含修補程式等級。每次您更新 RVM 時,RVM 都會更新已知清單 ($rvm_path/config/db 和 $rvm_path/config/known),因此主要。次要版本的「目前」版本(例如,撰寫本文時為 2.1.2)可能會對您有所改變。由於這個原因,RVM 沒有依您已安裝的內容為準。它依據這兩個檔案中維護的內容為準。
注意:Ruby 從 Ruby 2.1.1 開始切換到語意化版本控制方案,這可能會影響您使用 rvm 來管理它的方式。 Ruby 語意化版本控制
請注意:RVM 對您已安裝的任何系統 Ruby 採取「不干預」政策。若要「使用」系統 Ruby,您可以指示 RVM 復原它所套用的環境變更,如下所示。
$ rvm use system $ ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] $ which ruby /usr/bin/ruby
which
指示目前的殼層傳回 Ruby 的位置。在此情況下,您可看到 RVM 實際上已將自己「隱藏」在系統中,並讓您存取系統安裝的 Ruby。隱藏並不表示 RVM 已消失,而是系統環境和相關變數已設定回系統 Ruby 預期的狀態,就像 RVM 從未安裝一樣。執行另一個 $ rvm use default
會讓 RVM 恢復服務,並載入您設定為預設 Ruby 的任何 Ruby。您可以隨時執行 $ rvm alias show default
來查看預設 Ruby。
我們不能過度強調這一點!RVM 不會控制系統 Ruby 或其 gem。只有 RVM 安裝的 Ruby 和 gem 才在 RVM 的控制之下!
∞下一步是什麼?
若要進一步了解,請瀏覽網站的其餘部分。特別是,請務必查看工作流程 範例。
請記住,切換 Ruby 是以每個殼層為基礎。如果您想要更多資訊,了解在開啟新殼層時如何設定可用的 Ruby,您需要閱讀我們的網頁,了解如何 設定預設 Ruby 解譯器。
在您熟悉處理 Ruby 解譯器之後,下一步是開始學習 RVM gemset。
如果您想要知道 RVM 在任何時候選擇並啟用的 Ruby(如果有),您可以將此資訊新增到您的 殼層提示。
如果您在殼層中使用 Tab 補完,請參閱有關使用 殼層補完 的文件。