一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

ruby1.8系とruby1.9系を共存させるライブラリRVM

 そろそろruby1.9系に乗り換えますかと思い立ち、MacBookに環境を構築することにしました。macportsで管理したいので1.9.2をインストールしたのですが、ruby1.9.2をmacportsでインストールすると/opt/local/binにruby1.9というファイル名でインストールされてしまいます。完全に乗り換えるなら1.9.2のインストール時にrubyとしてインストールできるのですが、やはり1.8系も共存させて切り替えて使いたい・・・というわけでRuby処理系を管理できるgemのRVMを使うことにしました。備忘録を兼ねてブログにまとめます。

RVMインストール手順

 色々とインストール方法はあるのですが、Rubygemsを使ったやり方が一番楽です。

$ sudo gem install rvm
$ rvm-install # $HOMEディレクトリに.rvmが作成される

 .bashrcに以下の内容を追記し、.rvmにパスを通します。(RVMはbashスクリプト)

if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi
$ source ~/.bashrc # sourceで.bashrcのパスを通します。

 これで完了。

【追記】$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )でも可。こっちのがいいかも

使い方

 面倒なので、コマンドの右側にコメントで解説。Rubygemsも複数管理できるんですねこれ。

$ rvm help # ヘルプ表示
$ rvm list known # rvmにインストールできるRuby処理系を一覧表示
$ rvm install ruby-1.9.2 # 指定した処理系のインストール
$ rvm list # rvmにインストール済みの処理系を表示

rvm rubies

   ruby-1.9.2-p0 [ x86_64 ]
$ ruby -v # MacPortsでインストールしたrubyは1.8.7
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
$ rvm use ruby-1.9.2
Using /Users/username/.rvm/gems/ruby-1.9.2-p0
$ ruby -v # 1.9に変わってます
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
$ rvm reset # rvmでの管理を終了
$ ruby -v # MacPortsrubyに戻ってます
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
$ rvm use ruby-1.9.2 # 再び処理系変更
$ rvm gemset create rails3 # gemsetを作成
$ rvm gemset use rails3 # gemsetの切り替え
$ rvm use ruby-1.9.2@rails #とすれば処理系変更時にgemsetも指定できる
$ rvm gemset list # gemsetのリスト表示

gemsets for ruby-1.9.2-p0 (found in /Users/username/.rvm/gems/ruby-1.9.2-p0)
global
rails3

$ rvm gemdir # gemsのパスを確認できるが、処理系も分かりますねこれ
/Users/username/.rvm/gems/ruby-1.9.2-p0@rails3
$ rvm ruby hoge.rb # で指定したスクリプトを複数の処理系で実行して動作確認できる
$ rvm update # rvmのアップデート
$ rvm reload # ↑のrvmを使用可能にする

RVMを使っててありがちな失敗

 gem使う時にsudo付けんなということ。普通に、

$ gem install rails

 とすること。sudoを付けると当然ながらrvmで指定されてるgemsのパスに入ってくれません。MacやLinuxの人で今までRVMを使ってない人はついついやっていまいがちかも。

参考サイト

 ほぼ以下のサイトの引用です。

 いやしかしrvm便利ですね。糞便利!