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