Edited at

rbenv や Bundler を用いた Ruby環境構築

More than 3 years have passed since last update.


前置き、概要説明

Rubyはバージョンによる差異が大きく、各バージョンで互換性がない場合もあります。その為、複数のプロジェクトに携わっている場合はプロジェクト毎にRubyのバージョンを切り替える必要があります。この問題を解決してくれるのがrbenvというツールです。

rbenvはシステム内に複数のバージョンを共存させることを可能にしてくれます。具体的には、特定のディレクトリ配下(プロジェクト)に特定のバージョンを適応するといった制限を掛けてくれます。つまり指定のディレクトリ外には影響を与えず、隔離することが可能な為にクリーンな環境が保てます。

これはRubyのライブラリであるgemにおいても同様です。バージョンによる差異が大きい場合がある為、プロジェクト毎に適切なバージョンのgemを利用する場合があります。これにはBundlerというツールを利用します。

Bundlerを用いることで、本来Rubyに紐づいてインスールされるgemライブラリを特定のディレクトリ配下(プロジェクト)にインストールすることが可能です。つまり、同一バージョンのRuby内でも複数のgemライブラリを共存させることが可能となります。


rbenvを用いたRubyインストール


1. rbenvをチェックアウトする

rbenvをGitHubリポジトリからチェックアウトします。


ターミナル

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv


rbenv自体にはインストール済みのrubyを管理する機能しかありません。なので、rubyをインストールする機能であるruby-buildも併せてチェックアウトする必要があります。


ターミナル

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



2. rbenv向けの設定を行う

rbenvを利用出来るようにする為にシェルの設定ファイル(~/.bashrcなど)に下記を追記します。


~/.bashrc

export PATH=$HOME/.rbenv/bin:$PATH

eval "$(rbenv init -)"

設定を追記したら設定を反映させます。


ターミナル

$ source ~/.bashrc



3. Rubyをインストールする

初めにインストール可能なRubyのバージョンを確認します。


ターミナル

$ rbenv install -l


バージョンを指定してインストールを実行します。


ターミナル

$ rbenv install 2.2.2


指定のバージョンが実際にインストールがされたかを確認します。


ターミナル

$ rbenv versions

* 2.1.0 (set by /home/ryo-as/.rbenv/version)
2.2.2

「*」マークは現在適用されているRubyのバージョンです。今回の場合、システム(global)上でバージョン2.1.0が適用されております。

※この時点では先程インストールしたバージョン2.2.2はまだ適用されておりません


4.Rubyを適用する

特定のディレクトリにバージョンを指定して適用します。


ターミナル

$ cd project_dir

$ rbenv local 2.2.2

適用されたかを確認しましょう。


ターミナル

$ rbenv versions

2.1.0
* 2.2.2 (set by /var/www/project_dir/.ruby-version)

$ ruby -v
ruby 2.2.2p0 (2014-12-25 revision 49005) [i686-linux]



5.Rubyをアンインストール

特定のバージョンをアンインストールする場合は下記のコマンドです。


ターミナル

$ rbenv uninstall 2.2.2



Bundlerを用いたgemライブラリ管理


6. Bundlerをインストールする

Bundler自体もgemライブラリなので、gemコマンドを用いてインストールを行います。


ターミナル

$ rbenv exec gem install bundler

$ rbenv rehash

今回、gemコマンドを「rbenv exec gem」として実行している点がポイントです。これはrbenvで適用されているRubyのgemを明示的に実行しております。


7. Bundlerの設定を行う

はじめに下記コマンドでBundlerの設定ファイルを生成します。


ターミナル

$ rbenv exec bundle init


※上記のコマンドが厳密ですが、システム側のRubyにBundlerをインストールしていない場合は混在しないので下記のようにrbenv execを省略することも可能です。


ターミナル

$ bundle init


bundle initを実行するとGemfileという設定ファイルが生成されます。このGemfileにインストールしたいgemライブラリを記載します。


Gemfile

gem "compass"


今回は試しにCompassをインストールしましょう。


7. Gemライブラリのインストールする

Gemfileに記載したgemライブラリを下記のように実際にインストールします。


ターミナル

$ bundle install --path=vendor/bundle


留意点は--pathオプションを用いて、プロジェクト配下にgemファイルをインストールしていることです。

このオプションを付け忘れてしまうとrbenvで指定したバージョンのRubyに紐付かれてインストールされてしまい、同じバージョンのRubyを利用している他プロジェクトに影響を与える可能性があります。


8. gemライブラリを使用する

bundleインストールされたgemライブラリを使用するには下記のようなコマンドを実行します。


ターミナル

$ bundle exec compass


bundle execを付けて実行することにより明示的に、bundleインストールされたgemライブラリを実行しています。

毎回bundle execを付けて実行するのは冗長ですので、direnvを用いてパスを通すと便利かと思います。

※direnvに関しては後日、別途記載します