複数のRuby環境を共存させられるRVM(Ruby Version Manager)を使う

MacのSnow Leopardにデフォルトで入っているRubyは、irbで日本語を入力できない。

$ irb
> puts "こんにちは、世界"  # こんなふうに日本語を入力できない

なので、普通にRuby 1.8.7をインストールしなおして、irbで日本語が通るようにしたかっただけなんだけど、なんか最初から入ってるのとは別のところにインストールされたりして、面倒なことになりそうだったので、複数のRuby環境を共存させられるRVMを試してみることに。結果、大正解。Ruby環境だけでなく、gem環境も簡単に切り替えられる。

RVMのインストール

まずはMacPortsからreadlineをインストールする。irbで日本語を入力するために必要らしい。何をするものかはよく知らない。

$ sudo port selfupdate
$ sudo port install readline

続いてgit-coreとcurlをインストールする。RVMをインストールするのに必要。

$ sudo port install git-core
$ sudo port install curl

以上は既に入っていればもちろん不要。本命のRVMのインストール。

$ bash < <( curl [http://rvm.beginrescueend.com/releases/rvm-install-head](http://rvm.beginrescueend.com/releases/rvm-install-head) )

でインストール完了。ホームディレクトリに.rvmというディレクトリが作成される。次に.bashrcrvmコマンドが使えるように設定する。

if [[ -s ~/.rvm/scripts/rvm ]] ; then source ~/.rvm/scripts/rvm ; fi

そんでターミナルでその設定を反映させる。

$ source ~/.bashrc
$ rvm -v

rvm -vして、RVMのバージョンが表示されれば、RVMを使う準備完了。

RVMを使って複数のRubyをインストール

インストール可能なRubyのバージョン一覧を見るには次のコマンドを実行する。

$ rvm list known

こんなにたくさんのRubyをインストールできるらしい。

# MRI Rubies
[ruby-]1.8.6[-p399]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p302]
[ruby-]1.8.7-head
[ruby-]1.9.1-p243
[ruby-]1.9.1[-p376]
[ruby-]1.9.1-p429
[ruby-]1.9.1-head
[ruby-]1.9.2-preview1
[ruby-]1.9.2-preview3
[ruby-]1.9.2-rc1
[ruby-]1.9.2-rc2
[ruby-]1.9.2[-p0]
[ruby-]1.9.2-head
ruby-head
# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.5.1
jruby[-1.5.2]
jruby-head
# Rubinius
rbx[-1.0.1]
rbx-head
# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7]
ree-1.8.6-head
ree-1.8.7-head
# MagLev
maglev[-24209]
maglev-head
# Shyouhei head, the default mput
mput[-head]
# Mac OS X Snow Leopard Only
macruby[-nightly] # the default macruby
macruby-head      # Build from the macruby git repository
# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head

今回はMRIなRuby 1.8.7と1.9.2をインストールしてみる。とりあえず、readlineのインストール場所を確認(デフォルトでは/opt/local)。

$ port contents readline

/opt/local/~なそれっぽいパスがいっぱい表示されたらたぶんおk。Ruby 1.8.7のインストール。1.8系はirbで日本語入力できるようにするためには、Rubyをインストールする際に、readlineのパスを指定する必要がある。

$ rvm install 1.8.7 -C --with-readline-dir=/opt/local

Ruby 1.9.2のインストール。1.9系はreadlineがらみのオプションは不要っぽい。

$ rvm install 1.9.2

これで1.8.7と1.9.2のインストールは完了。

RVMでインストールしたRubyを使う

RVMでローカルにインストールされているRubyのバージョン一覧を見るコマンド。

$ rvm list

使用するRubyのバージョンを変更するにはuseコマンドを使う。

$ rvm use 1.8.7

ターミナルを別タブで開いたりMacを再起動すると、Rubyのバージョンが元に戻ってしまうので、--defaultオプションで常に使用するバージョンを指定する。

$ rvm use 1.8.7 --default

RVMでインストールしたRubyを削除する

removeコマンドを使って削除する。

$ rvm remove 1.8.7

RVM自体を最新版にアップデートする

updateコマンドを使う。

$ rvm update --head
$ rvm reload

RVMを使う上での注意点は、gemのインストールではsudoを付けないこと。ホームディレクトリの.rvm配下にインストールされるのでsuはいらない。

gemsetの切り替えも使うと便利で、同じバージョンのRubyでRails環境をバージョン2と3でわける、なんてことも簡単にできる。すてき。Rubyの1.8/1.9系、Railsの2.x/3.x系はちょうど過度期でどっちの環境も触ってみたいので自分には最適なツールだった。


rvm: 複数のRubyを共存させる最新のやり方 - 床のトルストイ、ゲイとするとのこと Ruby Freaks Lounge:第39回 RVM(Ruby Version Manager)による環境構築