話題の記事

rbenv を利用した Ruby 環境の構築

2014.06.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、クラスメソッドの稲毛です。

複数バージョンの Ruby を切り替えるだけでなく、ローカルディレクトリ毎に Ruby のバージョンを指定できる「 rbenv 」がとても便利だったので、インストール方法などを記しておきます。

ビルド環境の構築

Ruby をビルドする環境が構築されていない場合は、下記 ruby-build の Wiki を参考にビルド環境を構築する。

rbenv + ruby-build のインストール

rbenv で Ruby のインストールを行うので rbenv のプラグイン「 ruby-build 」を併せてインストールする。

Linux の場合

ここでは既に Git がインストールされているものとします。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

$ source ~/.bash_profile
$ rbenv --version
rbenv 0.4.0-97-gfe0b243
1, 2 行目
GitHub から rbenv と ruby-build をクローンする。
.rbenv
`-- plugins
    `-- ruby-build
4, 5 行目
rbenv へパスを通し初期化するスクリプトを .bash_profile へ追加する( bash の場合)。
7, 8 行目
.bash_profile を実行後、動作を確認する。

MacOSX の場合

MacOSX では HomeBrew を利用すると簡単。

ここでは既に HomeBrew がインストールされているものとします。

$ brew update
$ brew install rbenv ruby-build

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

$ source ~/.bash_profile
$ rbenv --version
rbenv 0.4.0
1, 2 行目
HomeBrew のパッケージツリーを更新し、rbenv および ruby-build をインストールする。
4 行目
rbenv の初期化スクリプトを .bash_profile へ追加する( bash の場合)。
6, 7 行目
.bash_profile を実行後、動作を確認する。

Ruby のインストール

「 rbenv install 」コマンドを用いて Ruby をインストールする。

「 --list 」オプションを指定するとインストール可能な Ruby のバージョンがリスト表示される。

$ rbenv install --list
Available versions:
      ・
      ・
  2.1.1
  2.1.2
  2.2.0-dev
  jruby-1.5.6
  jruby-1.6.3
  jruby-1.6.4
      ・
      ・
$ rbenv install 2.1.2

ここでは Ruby 2.1.2 をインストールしています。

Ruby バージョンの表示

rbenv versions

「 rbenv versions 」コマンドで、インストール済み Ruby のバージョンがリスト表示される。

$ rbenv versions
  1.9.3-p547
  2.0.0-p481
* 2.1.2 (set by /home/user/.rbenv/version)
  jruby-1.7.12

カレントディレクトリで有効な Ruby バージョンにはアスタリスク( * )が表示される。

rbenv version

「 rbenv version 」コマンドで、カレントディレクトリで有効な Ruby バージョンが表示される。

$ rbenv version
2.1.2 (set by /home/user/.rbenv/version)

Ruby バージョンの選択

rbenv global

「 rbenv global 」コマンドで、環境全体での Ruby バージョンを指定できる。

$ rbenv global 1.9.3-p547
$ rbenv version
1.9.3-p547 (set by /home/user/.rbenv/version)

rbenv local

「 rbenv local 」コマンドで、ディレクトリ固有の Ruby バージョンを指定できる。

$ cd
$ mkdir hoge && cd $_
$ rbenv local 2.0.0-p481
$ rbenv version
2.0.0-p481 (set by /home/user/hoge/.ruby-version)
$ cd
$ mkdir piyo && cd $_
$ rbenv local 2.1.2
$ rbenv version
2.1.2 (set by /home/user/piyo/.ruby-version)
$ cd
$ mkdir fuga && cd $_
$ rbenv local jruby-1.7.12
$ rbenv version
jruby-1.7.12 (set by /home/user/fuga/.ruby-version)

上述のコマンド実行結果では、以下のような構成となる。

user     <-- global 1.9.3-p547 (set by /home/user/.rbenv/version)
|-- hoge <-- local  2.0.0-p481 (set by /home/user/hoge/.ruby-version)
|-- piyo <-- local  2.1.2 (set by /home/user/piyo/.ruby-version)
`-- fuga <-- local  jruby-1.7.12 (set by /home/user/fuga/.ruby-version)

子ディレクトリでは親ディレクトリの環境が継承される。

$ cd
$ cd fuga
$ rbenv version
jruby-1.7.12 (set by /home/user/fuga/.ruby-version)
$ mkdir fugafuga && cd $_
$ rbenv version
jruby-1.7.12 (set by /home/user/fuga/.ruby-version)
$ mkdir fugafugafuga && cd $_
$ rbenv version
jruby-1.7.12 (set by /home/user/fuga/.ruby-version)
fuga                 <-- jruby-1.7.12 (set by /home/user/fuga/.ruby-version)
`-- fugafuga         <-- jruby-1.7.12 (set by /home/user/fuga/.ruby-version)
    `-- fugafugafuga <-- jruby-1.7.12 (set by /home/user/fuga/.ruby-version)

rbenv, ruby-build の更新

望む Ruby のバージョンがリストに表示されない場合は ruby-build を更新する。

Linux の場合

$ cd ~/.rbenv
$ git pull
$ cd ~/.rbenv/plugins/ruby-build
$ git pull

MacOSX の場合

$ brew update
$ brew upgrade rbenv ruby-build

参照