2014年3月11日火曜日

Debianでパッケージからrbenvとruby-install入れて使う

ソフトウェア開発では、成果物をリリースする際にはプログラミング言語のバージョンを固定するため、後からメンテナンスする際にその言語のそのバージョンで固有のバグを再現して修正するため、言語をリリース時のバージョンで実行できるような環境を残して置かなければなりません。また、複数プロジェクトを持つことになった場合は、それぞれのプロジェクトで言語のバージョンが違ったりすると、言語のバージョンを切り替えつつ作業をしなければならなくなります。

そこで、1つのマシン上で特定のディレクトリごとに使う言語のバージョンを切り替えられる仕組みが存在します。Rubyではその1つにrbenvがあります。以前からrvmもあったらしいですが、最近ではより軽量なrbenvが人気で乗り換える人も多いようです(rvmは使ったこと無いので詳しいことはググってください)。

で、開発にDebian7を使ってて、パッケージも用意されてるようなのでrbenvを入れました。ここでは利用するRubyのバージョンは1.9.3-p194としましょう。rubyをrbenv経由でインストールするにはruby-buildパッケージも必要です。

[user@host]% aptitude install rbenv ruby-build
[user@host]% rbenv install 1.9.3-p194
[user@host]% rbenv rehash
[user@host]% rbenv global 1.9.3-p194

~/.zshrc に以下の行を追記します。PATHに$HOME/.rbenv/binを追記するのはrbenvをソースからインストールした場合だけに必要なので、パッケージから入れた場合は下記だけで大丈夫です。

eval "$(rbenv init -)"

これで source ~/.zshrc で読み直すかログインしなおすと、先ほどインストールしたrubyがrbenvの制御下にあることがrubyのパスから確認できると思います。ちなみにgemも同様にrbenvの制御下にありますね。

[user@host]% which ruby
/home/user/.rbenv/shims/ruby
[user@host]% ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
[user@host]% which gem
/home/tkasai/.rbenv/shims/gem

特定のディレクトリ以下でrubyのバージョンを切り替えるには、

[user@host]% rbenv local <version>

のようにします。するとそのディレクトリに.rbenv-versionというファイルが作られて、使用するバージョンが記録され、次回からrbenvが自動的にバージョンを切り替えてくれます。

さらにgemの管理のためBundlerも入れましょう。rbenvはrubyのバージョン切り替えだけを行うのでプロジェクトごとにgemも切り替えたい場合はBundlerが必要です。インストール後の rbenv rehash を忘れずに。

[user@host]% gem install bundler
[user@host]% rbenv rehash

念のため、ログアウトしてログインし直します。bundleコマンドのパスを調べると、rbenv制御下に入っています。

[user@host]% which bundle
/home/user/.rbenv/shims/bundle

あとは通常のbundleコマンドと同じ使い方でOKです。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿