rbenv, ruby-build導入メモ

複数のバーションのrubyを切り替えられるようにするrbenvとruby-buildをインストールしてみたのでメモします。

まずは、homebrewでコマンド本体をインストールします。

% brew install rbenv ruby-build

インストール途中にシェルの設定が書かれているのでこの通り追加します。PATHの設定、補完関数の追加、rbenvコマンドの再定義などをしているようです。
2行目を~/.zshrcに追加すればいいのですが、zshの場合は$(rbenv init -)を$(rbenv init - zsh)に変えないとエラーが出るので注意です。

To enable shims and autocompletion add to your profile:
  if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

設定を読み直してエラーを吐かなければOKです。

% source .zshrc

次にRubyのビルドのための準備です。OSX標準のopensslとreadlineはアレらしいのでhomebrewからインストールします。

% brew install openssl
% brew link openssl
% brew install readline
% brew link readline

installサブコマンドを-l付きで実行するとインストール可能なrubyのバージョンが表示されるので、ここから選択します。JRubyも入っているんですね。

% rbenv install -l
Available versions:
(以下長いので適当に抽出)
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p370
  1.9.3-p286
  jruby-1.7.0
  maglev-1.0.0
  rbx-1.2.4
  rbx-2.0.0-dev
  ree-1.8.7-2012.02

先ほどインストールしたopensslとreadlineにリンクさせる為にオプションを付けてインストールコマンドを叩きます。

% CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 1.9.3-p286

rbenvのrubyの切り替え方法は以下の3つがあります。

  • global そのユーザで有効
  • local そのディレクトリで有効
  • shell そのシェルで有効

今回は普段使うバージョンの選択なのでglobalサブコマンドでバージョンを指定します。 

% rbenv global 1.9.3-p286
% ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin12.2.1]

1.9.3p286を使うことができています。

仕組みはこちらで解説されていますが、~/.rbenv/versions以下に各バージョンのバイナリをインストールし、~/.rbenv/shims/に使用するバージョンのシンボリックリンクをおいてPATHを通しているようです。

またgemsetは上の3つの切り替え方法とは関係なく、現在選択しているrubyのバージョンに紐付いているようです。gemで実行コマンドをインストールするような操作をした場合、rbenv側で対応するシンボリックリンクを作成しなければならないため、コマンド実行前に

% rbenv rehash

を実行する一手間が必要になります。