Rubyの複数バージョン管理にchrubyを使う

rbenvのrehashに関してツイートしたらchrubyを教えて貰った。

{% tweet https://twitter.com/postmodern_mod3/status/318146065259974656 %}

HomeBrewですぐにインストールできます。

% brew install chruby

.zshprofileとかから必要なスクリプトをsourceするようにしておきます。
ZshとBashに対応しています。

### chruby
if [ -d /usr/local/opt/chruby ]; then
    source /usr/local/opt/chruby/share/chruby/chruby.sh
    source /usr/local/opt/chruby/share/chruby/auto.sh
fi

シェルに変更を認識させます。

% exec $SHELL -l

元々rbenv等を使っていた場合は、Rubyがインストールされているディレクトリを次のようにRUBIES変数に入れることで利用することができます。

% RUBIES=(~/.rbenv/versions/*)

% ls ~/.rbenv/versions
1.9.3-p327/  2.0.0-p0/

% chruby 2.0.0-p0
% which ruby
/Users/hideki/.rbenv/versions/2.0.0-p0/bin/ruby

% chruby 1.9.3-p327
% which ruby
/Users/hideki/.rbenv/versions/1.9.3-p327/bin/ruby

自動的に切り替えるのも試してみましょう。

% cd ~/tmp
% mkdir change-1.9
% echo '1.9.3-p327' > change-1.9/.ruby-version
% mkdir change-2.0
% echo '2.0.0-p0' > change-2.0/.ruby-version

% which ruby
/Users/hideki/.rbenv/versions/1.9.3-p327/bin/ruby
% cd change-2.0
% which ruby
/Users/hideki/.rbenv/versions/2.0.0-p0/bin/ruby
% cd ../change-1.9
% which ruby
/Users/hideki/.rbenv/versions/1.9.3-p327/bin/ruby

切り替わりましたね!

rbenvでインストールしたものではなく、chruby単体で使う場合のお話もしておきます。
chrubyは通常/opt/rubiesまたは~/.rubies配下にインストールされたRubyを認識します。

ディレクトリを作成します。

% mkdir ~/.rubies

ruby-buildでRubyをインストールします。

% ruby-build 2.0.0-p0 ~/.rubies

ruby-buildじゃなくて、rbenvのようにラッピングしてchruby install的なことができるといいな、と思っていたらissueが上がっていました

後はzsh-completionも欲しい所。

GitHubのリポジトリを覗くと、テストとかしっかり書いていたり、コントリビュートの仕方とか定義してたり、きっちりやっていて期待のプロダクトです。