MacにRVMでRuby環境を作ってみた
Snow LeopardにはRubyもRailsも最初から入ってるんだけど、やっぱり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/
流れとしてはこんな感じ。
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を切り替えて使うとかできる。すごい。
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:といいつつ、自分は書かれているとおりにはやらなかった。