2012/04/06

RVM - Ruby Version Manager

[安裝 rvm]
# 注意:使用 root 身份安裝的 rvm 是 system wide 的!
sudo su -

apt-get remove --purge ruby
apt-get remove --purge gem

apt-get install git autoconf patch curl bash wget

curl -L get.rvm.io | bash -s stable
usermod -a -G rvm YOUR_ACCOUNT

exit
logout
login

rvm notes

# ZSH 4.3.15 is buggy with RVM (2012/03)

[安裝 Ruby]
rvm install 1.8.6
rvm install 1.9.3

# rvm alias create default ruby-1.9.3
rvm --default use 1.9.3

ruby --version
which ruby
which gem

rvm help
rvm list
rvm list known
[使用 gemset]
rvm gemdir # 顯示 gems 資料夾

rvm gemset name # 查詢當前所用 gemset 的名稱
rvm gemset list # 查詢所有的 gemset
rvm gemset use NAME # 切換到指定的 gemset

rvm gemset create foo # 建立一個叫 foo 的 gemset 集合

rvm use 1.9.3@foo # 切換到 Ruby 1.9.3 搭配 foo 這個 gemset 的環境
rvm list # 查看 Ruby 1.9.3 的 foo 內有哪些 gems
rvm install rails # 在 Ruby 1.9.3 的 foo 內安裝 rails

rvm use 1.9.3@global # 切換回 Ruby 1.9.3 default 的 gemset 環境
rvm list # 查看 default 的 gemset 內有哪些 gems

rvm gemset export backup.gems # 將當前的 gems 備份
rvm gemset import backup.gems # 將 backup.gems 倒回來

# global gemset(~/.rvm/gemsets/global.gems)
# default gemset(~/.rvm/gemsets/default.gems)
# 這兩個 gemset 有點特殊,而且兩個其實不盡相同。
# global 會被 "added" 到每個用 rvm 安裝的 ruby
# default 會被 "included" 到每個新建的 gemset

[rvmrc]

rvmrc 是 rvm 的 runtime configuration,可以依據作用範圍的不同做區分。

系統範圍的:/etc/rvmrc
使用者範圍的:~/.rvmrc
專案範圍的:.rvmrc

組合技:
rvm --create --rvmrc 1.9.3@project
# 搭配 Ruby 1.9.3 建立一個叫 project 的 gemset,並 use 它,並幫它建立一個 .rvmrc

MRI:Matz's Ruby Interpreter(Matz 的 Ruby 直譯器)
p.s. Matz 是發明 Ruby 語言的日本程式設計師 Yukihiro Matsumoto 的昵稱。

Reference:
http://sirupsen.com/get-started-right-with-rvm/
http://beginrescueend.com
http://beginrescueend.com/rvm/install
http://beginrescueend.com/rvm/basics