rbenvのインストールとセットアップ
こちらの記事は、rbenvつかってrailsチュートリアルやってみよう!の記事から解説部分を除去して、Hot to 部分を抽出し、すこし上級向けのプラグインなどの紹介も盛り込んだものになります。
Mac Portsをアンインストール
パッケージ管理のhomebrewを利用しますが、同じパッケージ管理システムのMac Portsと競合してしまうので、Mac Portsをご利用の場合はアンインストールして下さい。詳しくはGoogleで検索。
Xcode Command line tools をインストール
rbenvをHomebrewでインストールしますが、Homebrewの利用には、Appleが提供するデベロッパー向けの開発環境であるXcodeのコマンドラインツールが必要になります。AppStoreでXcodeをインストールし(大容量のため有線LAN推奨)、さらにターミナルで次のようにしてコマンドラインツールをインストールします。
1 |
$ xcode-select --install |
homebrewをインストール
homebrewを使ってrbenvをインストールするので、まずhomebrewをインストールします。
1 |
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" |
rbenvをインストール
1 2 |
brew install readline ruby-build rbenv echo 'eval "$(rbenv init -)"' >> ~/.bash_profile |
PATHを通す必要はありません。`eval "$(rbenv init -)"`
でPATHを通したりしてくれます。
Rubyをインストールする
利用可能なRubyの確認と、インストール
インストールできるRuby一覧を表示
1 |
rbenv install -l |
例)Ruby2.0.0をインストールする
1 |
rbenv install 2.0.0-p481 |
インストールには結構時間がかかります。時間があるときに、自分が利用する可能性のあるバージョンのRubyを揃えておくと良いと思います。
利用するRubyを設定、切り替えしてみる
コマンドでruby
と打った時に、どのRubyを使うか、rbenvで切り替えます。デフォルトのバージョン、このディレクトリではこのバージョンといった設定が可能です。
デフォルトのバージョンを設定
1 |
rbenv global 2.0.0-p481 |
これによって、この次の「カレントディレクトリ以下で利用するRuby」が設定されていない場合、globalで宣言したRubyがデフォルトで利用されることになります。
カレントディレクトリ以下で利用するRubyを指定
1 |
rbenv local 1.9.3-p125 |
.ruby-version
というファイルが出来て、バージョンが記録されます。.ruby-version
があるディレクトリ以下でruby
コマンドを実行すると、.ruby-version
に書かれたRubyが呼び出される仕組みです。
Mac に最初から入っているRubyを利用する
1 2 |
rbenv global system rbenv local system |
バージョンを指定する部分に system と打ち込むと、Mac本体にインストールされていたRubyが実行されるようになります。
便利なプラグインを入れて拡張
ちょっとそのままだとrbenvは不便だったりします。でも便利にしてくれるプラグインがGithubで公開されています。プラグインを入れるには~/.rbenv/pluginsフォルダに入れます。Githubから直接pluginsフォルダにgit clone
してしまいましょう。
rbenv-gem-rehash
rbenvを使っていると、gem install XXX
と新しいgemをインストールしたときに、rbenv rehash
しなければなりません。毎度面倒なので、自動で実行するようにしてくれるプラグインです。
1 |
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash |
もうこれがないと面倒過ぎます。絶対いれておきたいプラグイン。
rbenv-binstubs
bundlerでディレクトリローカルにインストールしたGemを、bundle exec XXX
というようなbundlerを介したコマンドで実行するのではなく、XXX
と直接実行できるようにするプラグイン。
1 |
git clone git://github.com/ianheggie/rbenv-binstubs.git ~/.rbenv/plugins/rbenv-binstubs |
bundle install
の時に--binstubs
オプションをつけます。そうするとbundle exec
をコマンドの頭に付けなくてもインストールしたgemを実行できるようになります。
仕組みは、binディレクトリが出来てそこに実行ファイルが集められ、そこにPATHが通るということのようです。
しかし、rails4のプロジェクトだとbinというディレクトリが標準で使われてしまっていて衝突します。なのでbundle install
のタイミングで実行ファイル用ディレクトリをデフォルトのbinではないものに指定します。
一般的なディレクトリの指定はどのようなものが主流か、調べた所、一般的なbundle install
したgemのインストール先はvendor/bundle、一般的な実行ファイル置き場はvendor/binらしいです。次のようにbundle installするのが良さそうです。
1 |
bundle install --path=vendor/bundle --binstubs=vendor/bin |
rbenv-gemset
「このプロジェクトでつかうgem環境」「あっちのディレクトリでつかうgem環境」、もしくは「こんな作業をするときのgem環境」などを切り分けたいときに、gemのグループ「gemset」を作るためのプラグイン。
1 |
git clone git://github.com/jf/rbenv-gemset.git ~/.rbenv/plugins/rbenv-gemset |
使い方は、rbenv gemset create 1.9.3-p125 my-set
という感じ。gemの環境はRubyのバージョンごとに切り替わってしまうので、gemセットもバージョンごとに作成します。
gemsetを作ったら、そのgemsetを使いたいディレクトリでecho >.rbenv-gemsets my-set
とやればOK。(要するに、.rbenv-gemsetsファイルが存在しその中にgemset名が記載されていると、そのディレクトリ以下で指定のgemsetが有効になる)
実際にこれらを駆使してRailsプロジェクトを作ってみる
というわけで実際にやってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Ruby2.0.0、rails4.0.5でやってみます。まずRubyを2.0.0に rbenv install 2.0.0-p481 rbenv global 2.0.0-p481 # 他のgemをインストールする役のbundlerだけはグローバルインストール gem install bundler # rails4.0.5用の作業環境を作成 mkdir -p workspace/rails4-0-5 cd workspace/rails4-0-5 # この作業環境を、Ruby2.0.0、rails4.0.5に固定します ## このディレクトリではRuby2.0.0を使用 rbenv local 2.0.0-p481 ## 他のrailsと混ざらないよう専用のgemsetを作成してrails4.0.5を入れる rbenv gemset create 2.0.0-p481 rails4-0-5 echo >.rbenv-gemsets rails4-0-5 gem install rails --version 4.0.5 # rails プロジェクトの生成。bundle install はさせない。 rails new myproject --skip-bundle # gemをディレクトリローカルにインストール、binstub用ディレクトリを指定 cd myproject bundle install --path=vendor/bundle --binstubs=vendor/bin |
案件ごとにRubyのバージョンが違ったりRailsのバージョンが違ったりする場合に、混ざること無く作業環境を独立させることが出来て、プロジェクトをチームで共有しやすいように、という点に重きをおいているつもりです。仕事で使ったこと無いんで全く妄想の想定の下で作ってますが!
もっといい方法や、「ここに書かれた方法はエレガントではない」、というツッコミがあったらぜひお寄せ下さい。。