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
を実行する一手間が必要になります。