RVM 是一個命令行工具,可以提供一個便捷的多版本 Ruby 環境的管理和切換。
https://rvm.io/
如果你打算學習 Ruby / Rails, RVM 是必不可少的工具之一。
這里所有的命令都是再用戶權限下操作的,任何命令最好都不要用 sudo.
RVM 安裝
1
2
3
|
$ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile |
修改 RVM 的 Ruby 安裝源到國內的 淘寶鏡像服務器,這樣能提高安裝速度
1
|
$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm /config/db |
Ruby 的安裝與切換
列出已知的 Ruby 版本
1
|
rvm list known |
安裝一個 Ruby 版本
1
|
rvm install 2.2.0 |
這里安裝了最新的 2.2.0, rvm list known 列表里面的都可以拿來安裝。
切換 Ruby 版本
1
|
rvm use 2.2.0 |
如果想設置為默認版本,這樣一來以后新打開的控制臺默認的 Ruby 就是這個版本
1
|
rvm use 2.2.0 --default |
查詢已經安裝的ruby
1
|
rvm list |
卸載一個已安裝版本
1
|
rvm remove 1.8.7 |
gemset 的使用
RVM 不僅可以提供一個多 Ruby 版本共存的環境,還可以根據項目管理不同的 gemset.
gemset 可以理解為是一個獨立的虛擬 Gem 環境,每一個 gemset 都是相互獨立的。
比如你有兩個項目,一個是 Rails 2.3 一個是 rails3. gemset 可以幫你便捷的建立兩套 Gem 開發環境,并且方便的切換。
gemset 是附加在 Ruby 語言版本下面的,例如你用了 1.9.2, 建立了一個叫 rails3 的 gemset,當切換到 1.8.7 的時候,rails3 這個 gemset 并不存在。
建立 gemset
1
2
|
rvm use 1.8.7 rvm gemset create rails23 |
然后可以設定已建立的 gemset 做為當前環境
use 可以用來切換語言或者 gemset
前提是他們已經被安裝(或者建立)。并可以在 list 命令中看到。
1
2
|
rvm use 1.8.7 rvm use 1.8.7@rails23 |
然后所有安裝的 Gem 都是安裝在這個 gemset 之下。
列出當前 Ruby 的 gemset
1
|
rvm gemset list |
清空 gemset 中的 Gem
如果你想清空一個 gemset 的所有 Gem, 想重新安裝所有 Gem,可以這樣
1
|
rvm gemset empty 1.8.7@rails23 |
刪除一個 gemset
1
|
rvm gemset delete rails2-3 |
項目自動加載 gemset
RVM 還可以自動加載 gemset。
例如我們有一個 Rails 3.1.3 項目,需要 1.9.3 版本 Ruby,整個流程可以這樣。
1
2
3
4
|
rvm install 1.9.3 rvm use 1.9.3 rvm gemset create rails313 rvm use 1.9.3@rails313 |
下面進入到項目目錄,建立一個 .rvmrc 文件。
在這個文件里可以很簡單的加一個命令:
1
|
rvm use 1.9.3@rails313 |
然后無論你當前 Ruby 設置是什么,cd 到這個項目的時候,RVM 會幫你加載 Ruby 1.9.3 和 rails313 gemset.
使用 RVM 快速部署 Nginx + Passenger
首先安裝 Passenger
1
|
gem install passenger |
然后使用 passenger-install-nginx-module 來安裝 Nginx 和部署。
因為這一步需要 root 權限(因為要編譯 Nginx)可以用 rvmsudo 這個東西(這個東西真是個好東西)。
1
|
rvmsudo passenger- install -nginx-module |
然后會讓你選擇是下載 Nginx 源碼自動編譯安裝,還是自己選擇 Nginx 源碼位置。
選擇 Nginx 手動安裝的可以添加別的編譯參數,方便自定義編譯 Nginx。
然后一路下載安裝。默認的安裝位置為 /opt/nginx.
然后看看 nginx.conf,都給你配置好了,只需要加上 root 位置(yourapp/public)就可以了。
當我第一次安裝完成了,就驚呼,這也太爽了吧。
PS: RVM 是個好東西,做的很智能,(大部分)操作失敗后會告訴你原因,然后告訴你需要安裝哪些Lib等等,非常適合新手老手使用,簡直是居家旅行必備良藥。