バージョン違いのRubyをインストールする方法について整理してみる

現状のRubyは1.9系と1.8系をいれておかないといけないような気がするけどどのように管理するのがよいのだろうか。

僕が知る限りの方法では以下のとおりでしょうか。

  • パッケージマネージャに任せる
  • rvmを使う
  • Zentestのmultirubyを使う。
  • サフィックスをつける
  • インストールする場所を変える

パッケージマネージャにまかせる。

aptやらyumやらmac portsやらはrubyパッケージとは別にruby1.9とかruby19などのパッケージが用意されているのでこれを使う方法。楽なのだけれどもバージョンが少し古かったりする。

Ubuntuだと以下のような感じでインストールします。

$ sudo apt-get install ruby1.9.1

rvmをつかう

今一番モダンな方法なのでしょうか?
http://rvm.beginrescueend.com/

jrubyなんかも使えて良い感じ。。僕が使ってみた限りではなんだか起動が遅くなってしまった(irbrspecを使用していると結構気になる)。OSX付属のrubyが遅いのが原因のような気がしていますが詳しくは調べていません。

$ rvm use 1.9.1

とするだけで切り替えられるのは良い感じです。

ZenTestのmultirubyを使う。

ZenTestについてくるmultirubyを使います。テスト目的なら有用な選択肢で、一つのコマンドでインストール済みのすべてのruby実行してくれます。

サフィックスをつける

パッケージ管理でやっている手法を自分でやる感じです。Rubyを自分でコンパイルすることになります。configure をするときに --program-suffix=1.9.1 のようにします。
個人的にはgemでインストールされる実行スクリプトが上書きされてしまうのが気になりますが、些末な問題かもしれません。(rspecをインストールしたときに作成されるspecとか)

インストール先を変える

rvmがやっているを手法を自分でやるような感じです。configureをするときに --prefix=/opt/ruby/191 のようにします。環境変数PATHを変更することで利用する Rubyを切り替えることになります。

まとめ

どれも長所短所があると重いますが、僕はインストール先を変える手法に落ち着いてます。環境変数の切り替えはスクリプトを書いてごまかしています。その方法は別の機会に。また、おすすめの方法があれば教えて欲しいです。