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 # MacPortsのrubyに戻ってます 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を使ってない人はついついやっていまいがちかも。
参考サイト
ほぼ以下のサイトの引用です。
- Ruby Freaks Lounge:第39回 RVM(Ruby Version Manager)による環境構築
- Ruby Freaks Lounge:第40回 RVM(Ruby Version Manager)による環境構築(2)
いやしかしrvm便利ですね。糞便利!