RVM 解決 Ruby 的版本問題


RVM 是一個命令行工具,可以提供一個便捷的多版本 Ruby 環境的管理和切換。

RVM 的官網是 https://rvm.io/。 如果你打算學習 Ruby / Rails, RVM 是必不可少的工具之一。

這里所有的命令都是再用戶權限下操作的,任何命令最好都不要用 sudo.

RVM 安裝

$ curl -L get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile

修改 RVM 的 Ruby 安裝源到國內的 淘寶鏡像服務器,這樣能提高安裝速度

FOR Mac

$ sed -i .bak -E 's!https?://cache.ruby-lang.org/pub/ruby!https://ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db

FOR Linux

$ sed -i -E 's!https?://cache.ruby-lang.org/pub/ruby!https://ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db

Ruby 的安裝與切換

列出已知的 Ruby 版本

$ rvm list known

安裝一個 Ruby 版本

$ rvm install 2.2.0

這里安裝了最新的 2.2.0, rvm list known 列表里面的都可以拿來安裝。

切換 Ruby 版本

$ rvm use 2.2.0

如果想設置為默認版本,這樣一來以后新打開的控制台默認的 Ruby 就是這個版本

rvm use 2.2.0 --default 

查詢已經安裝的ruby

$ rvm list

卸載一個已安裝版本

$ 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

$ rvm use 1.8.7
$ rvm gemset create rails23

然后可以設定已建立的 gemset 做為當前環境

use 可以用來切換語言或者 gemset

前提是他們已經被安裝(或者建立)。並可以在 list 命令中看到。

$ rvm use 1.8.7
$ rvm use 1.8.7@rails23

然后所有安裝的 Gem 都是安裝在這個 gemset 之下。

列出當前 Ruby 的 gemset

$ rvm gemset list

清空 gemset 中的 Gem

如果你想清空一個 gemset 的所有 Gem, 想重新安裝所有 Gem,可以這樣

$ rvm gemset empty 1.8.7@rails23

刪除一個 gemset

$ rvm gemset delete rails2-3

項目自動加載 gemset

RVM 還可以自動加載 gemset。
例如我們有一個 Rails 3.1.3 項目,需要 1.9.3 版本 Ruby,整個流程可以這樣。

$ rvm install 1.9.3
$ rvm use 1.9.3
$ rvm gemset create rails313
$ rvm use 1.9.3@rails313

下面進入到項目目錄,建立一個 .rvmrc 文件。

在這個文件里可以很簡單的加一個命令:

$ rvm use 1.9.3@rails313

然后無論你當前 Ruby 設置是什么,cd 到這個項目的時候,RVM 會幫你加載 Ruby 1.9.3 和 rails313 gemset.

解決gem 的鏡像問題

對於初學者,一定會遇到執行 bundle 時就被卡住的現像,這是由於rubygem.org 上在國內是超級慢甚至可以說是不可用的狀態。悻然我們還有 taobao,可以用taobao提供的鏡像來替代這一個讓人頭痛的問題。

淘寶的 RubyGems鏡像

以下內容是引用至 RubyGems 上的使用說明。

$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
$ gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org
# 請確保只有 ruby.taobao.org
$ gem install rails

如果你使用 Gemfile 和 Bundle (例如:Rails 項目)

你可以用 Bundler 的 Gem 源代碼鏡像命令。

$ bundle config mirror.https://rubygems.org https://ruby.taobao.org

這樣你不用改你的 Gemfile 的 source。

source 'https://rubygems.org/'
gem 'rails', '4.1.0'
...

使用 RVM 快速部署 Nginx + Passenger

Passenger 是一個 app server,支持基於 Rack 框架的 Ruby app(包括 Rails)。Passenger 的特點是需要作為模塊編譯到 Nginx 中,優點是配置簡單,不需要自己寫啟動腳本。

首先安裝 Passenger

$ gem install passenger

然后使用 passenger-install-nginx-module 來安裝 Nginx 和部署。

因為這一步需要 root 權限(因為要編譯 Nginx)可以用 rvmsudo 這個東西(這個東西真是個好東西)。

$ rvmsudo passenger-install-nginx-module

然后會讓你選擇是下載 Nginx 源碼自動編譯安裝,還是自己選擇 Nginx 源碼位置。

選擇 Nginx 手動安裝的可以添加別的編譯參數,方便自定義編譯 Nginx。

然后一路下載安裝。默認的安裝位置為 /opt/nginx.

然后看看 nginx.conf,都給你配置好了,只需要加上 root 位置(yourapp/public)就可以了。

當我第一次安裝完成了,就驚呼: "這也太爽了!"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM