MacにRVMでRuby環境を作ってみた

Snow LeopardにはRubyRailsも最初から入ってるんだけど、やっぱりRuby 1.9系が使いたいよねーということでRVMを入れてみた。
タイトルには「Macで〜」って入ってるけど、RVM自体はUNIX系の環境で使えます。


RVM(Ruby Version Manager)っていうのは、複数のRubyバージョン、Ruby処理系を簡単にインストールしたり切り替えたりできるようにするツールで、Perlでいえばperlbrew、Pythonでいえばpythonbrewみたいなもん。
これを使えばOS標準の環境も汚さないし、1.8系と1.9系とかプロジェクトで使用中のバージョンと最新版とかRails2とRails3とか、色々な複数の環境を簡単に共存させて使い分けることができる。ステキ!


RVMを使うとこんな感じでサクサク環境を使い分けることができるようになる。

rvm install 1.9.2        ←ruby-1.9.2をインストール
rvm install 1.8.7        ←ruby-1.8.7をインストール
rvm install jruby-1.6.2  ←JRuby-1.6.2をインストール

rvm use 1.8.7            ←ruby-1.8.7に切り替え
rvm use 1.9.2            ←ruby-1.9.2に切り替え

RVMのインストール

RVMのインストール方法はgemとかいくつかあるみたいなんだけど、とりあえず自分は公式サイトに載ってる方法で入れることにした。
ここに書いてもあれなので公式サイトを見てね。コマンドそのまま書いてあるからわかりやすいよ*1


https://rvm.beginrescueend.com/rvm/install/


流れとしてはこんな感じ。

  1. インストールスクリプトを落としてシェルで実行
  2. $HOME/.rvm/scripts/rvmを.bash_profileとか.bashrcで読み込むようにする

perlbrewとかと同じだね。
これで$HOME/.rvmにRVMの環境ができあがる。

RVMに関するコマンド

とりあえず基本的なところ。


このプラットフォーム特有の情報について

rvm notes


RVMのアップデート

rvm get [head | latest]
rvm reload


RVMで入れることのできる処理系一覧

rvm list known

ちなみにここでリストアップされるもの以外でもインストールはできるらしい。

Rubyのインストール…の前に

依存ライブラリのインストール

rvm package install readlineとか

Rubyで必要になる依存ライブラリもRVMの環境下に入れることができるらしい。OSに入れると競合したり上手くいかないことがあるので、閉じた環境に入れられるのはいい!
他にどんなライブラリが入れられるのかはhttp://beginrescueend.com/packages/を参照。


上記で入れたライブラリをリンクさせるためにはインストールコマンドに-Cとかでconfigureのオプションを指定しなければいけないんだけど、毎回やるのは面倒なので.rvm/config/dbのruby_configure_flagsに追加しておくと便利かも。

ruby_configure_flags=--enable-shared --disable-install-doc --with-readline-dir=/Users/pasela/.rvm/usr

こんな感じ。.rvmへのパスは適宜変えてね。

Rubyのインストール

Rubyのインストール

rvm install 1.9.2

これでruby-1.9.2がインストールされる。指定できるのはrvm list knownで出てきたやつ。JRubyならjruby-1.6.2とか。

configureオプションを指定する場合は-Cで指定する。複数指定する場合はカンマ区切りで並べるっぽい。

rvm install 1.9.2 -C "--enable-shared=true,--with-opt-dir=/usr/local"


アンインストール

rvm uninstall 1.9.2

これで1.9.2をアンインストールできる。uninstallの代わりにremoveを使うと入れるときに使ったソースなども消してくれる。

Rubyを切り替える

入ってるRuby一覧

rvm list

これでインストールされているRubyの一覧が表示される。


Rubyを切り替える

rvm use 1.9.2

これで1.9.2を使うためのPATHとかその他の環境変数が切り替わったので、今すぐruby-1.9.2が使える状態になる。


常時使用状態にする

rvm use 1.9.2 --default

切り替え状態はシェルを立ち上げなおしたりすると戻っちゃうんだけど、--defaultを指定するとずっと切り替えた状態にできる。


OS標準のRubyに戻す

rvm reset

これでRVMで入れたやつじゃない環境に戻る。

RubyGemsも切り替える

RVMではGemSetsという概念でもってRubyGemsも切り替えて使えるようになっている。
これを利用するとRails2とRails3を切り替えて使うとかできる。すごい。


まずはRubyGemsディレクトリの確認

rvm gemdir

今どこを向いているのかわかる。


GemSetsを作る

rvm gemset create foo

これでfooという名前のGemSetsができた。


GemSets一覧

rvm gemset list


GemSetsを切り替える

rvm gemset use foo

さっき作ったfooを使う。
切り替えるとrvm gemdirとか$GEM_PATH, $GEM_DIRとかが切り替わる。


Rubyを切り替えるときに@で一緒に指定することもできる。

rvm use 1.9.2@foo

複数のRubyでまとめて実行

RVMにはインストールしてあるRubyでまとめて実行する機能がある。
これを利用すると書いたプログラムが他のバージョンでもちゃんと動くか一発でテストできる。


まとめて実行

rvm ruby foo.rb


特定のバージョンを指定して実行

rvm ruby-head,ruby-1.8.7 foo.rb

rvmrc

.rvmrcファイルを利用するとRVMの設定を指定できたり、特定のディレクトリで自動的にバージョンを切り替えたりといったことができるらしい。

*1:といいつつ、自分は書かれているとおりにはやらなかった。