前置き、概要説明
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など)に下記を追記します。
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ライブラリを記載します。
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に関しては後日、別途記載します