Tech Sketch Bucket of Technical Chips by TIS Inc.

rbenvで複数バージョンのRubyを管理する

Pocket

この記事はeXcale Developer's Blogから移転されたものです。


eXcale 開発チームの泉谷(@syguer)です。
今回は、rbenvを使って複数バージョンのRubyを管理する方法を紹介します。
eXcaleではRubyを使う際にrbenvを使ったバージョンの切り替えを行っています。これは新しいRubyのバージョンに移行する際に手間をかけないためという面と、サービスとして複数のバージョンを切り替える必要があるといった理由があるためです。
本記事ではそのrbenvの使い方について紹介します。

rbenvとは

rbenvは複数バージョンのRubyを管理するためのツールです。

例えば、
・新しいバージョンのRubyの機能を試したい
・新しいバージョンでアプリケーションの動作確認がしたい
・Rubyを古いバージョンに一時的に戻したい
・アプリケーションごとに使いたいバージョンが異なる

のようなときに、都度バージョンをインストールし直して…とやっているととても時間がかかります。
rbenvを使えば、使いたいバージョンを1度インストールしておけば、簡単に切り替えて使い分けることができます。

ソースコード
Github sstephenson / rbenv
本記事公開時点(2014年4月30日)の最新バージョンは 0.4.0です。

【補足】
rbenvの他にも複数バージョンのRubyを管理するツールとしてRVM(Ruby Version Manager)というツールもあります。
RVMは高機能な分動作が複雑、それに対してrbenvは軽量でシンプルという評価のようです。
eXcaleでも同様に軽量でシンプルであるという理由でrbenvを採用しています。
この2つのツールは共存することができないため、以下の例ではRVMが入っていない前提で進めていきます。
もし、RVMが入っている場合は以下のコマンドでアンインストールできます。

※.bash_profile等にrvmを使った設定を入れている場合はそれらも削除してください


rbenvのインストール

rbenvのインストールは簡単で、リポジトリをgit cloneしてpathを通すだけです。
(※ Mac OS Xを使用している場合はhomebrewを使うという選択肢もあります)

ここまでできたらrbenvが使えているか確認してみます。


Rubyをインストールする

早速Rubyをインストールしたいのですが、rbenvは標準でRubyのインストールをする機能がありません。
Rubyのコンパイル、インストールをするにはプラグインとして提供されているruby-buildをインストールします。
ruby-buildもrbenvと同様、git cloneするだけです。

では改めてRubyをインストールしてみます。
まずはどのバージョンがインストール可能か確認してみましょう。
installできるバージョンの一覧は「rbenv install -l」コマンドで見ることができます。

この中からバージョンを選択してインストールします。
今回は2.1.1をインストールしてみます。

ダウンロード、インストールしたRubyは「~/.rbenv/versions/」以下にあります。

バージョンの切り替え

現在どのRubyのバージョンが使われるようになっているかは以下のコマンドで確認できます。

ここではまだsystemにインストールされているRubyが使われています。

バージョンを切り替えるには以下のようなコマンドを実行します。

"環境"のところにはglobal、local、shellのいずれかを入れます。

・global
システム全体で使うバージョンを指定する際はこれを指定します。
この値を指定して実行すると、「~/.rbenv/version」というファイルを書き換えて、そのバージョンを使うようになります。

・local
あるアプリケーションでバージョンを設定したいといった際はこれを指定します。
この値を指定して実行すると、そのディレクトリに「.ruby_version」というファイルが作成され、それを見るようになります。
globalの設定があっても、localの設定がある場合はそれが優先されます。

・shell
現在のシェルで使うバージョンを指定します。
この値を指定して実行すると、「RBENV_VERSION」という環境変数にバージョンがセットされ、それを見るようになります。

以下の例はglobalで2.1.1を使うように設定しています。

ruby-buildのアップデートについて

新しいバージョンがでたから試そうと思い「rbenv install -l」と叩いて見ても、リストにないことがあるかもしれません。
実はインストールできるバージョンのリストは、動的に取得しているのではなく、ruby-buildで定義された情報を表示しています。
そのため、新しいバージョンを使いたい場合は、ruby-buildの更新が必要となります。
ruby-buildをアップデートするには、ruby-buildをcloneしたディレクトリでgit pullをします。


最後に

今回は、rbenvを使って複数バージョンのRubyを管理する方法を紹介しました。
開発言語としてRubyを使っている場合は便利だと思うのでぜひ使ってみてください。

エンジニア採用中!私たちと一緒に働いてみませんか?