そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

rbenv - bundler と組み合わせてローカルにインストール

複数のアプリケーションでバージョン違いのライブラリを
入れるなどしたい場合、bundle を組み合わせて使います。


rails 4.0.2 を vendor/bundle 以下にインストールする例

Gemfile を作成
source "https://rubygems.org"

gem "rails", "4.0.2"
bundle install

vendor/bundle 以下にインストールします

$ bundle install --path=vendor/bundle --binstubs=vendor/bin

これで 実行できるようになります。

$ vendor/bin/rake --version
rake, version 10.1.1

vendor/bin は PATH に追加されないので、コマンド名のみで実行すると、
.rbenv 以下にインストールしたもの(以下、グローバルといいます)を
使用してしまうので注意してください。

$ rake --version
rake, version 10.1.0
rbenv-binstubs を使ってプロジェクト毎にbinのパスをかえる

rbenv-binstubs を使うと、
--binstubs で指定したディレクトリのパスを探してくれます。

$ rake --version
rake, version 10.1.1

のように実行できるようになります。

インストール

$ cd ~/.rbenv/plugins
$ git clone https://github.com/ianheggie/rbenv-binstubs.git

これだけ。

bundle でインストールしたプログラムのパスを検索するには、
rbenv which を使います。
コマンド名のみで実行したときに、binstubs で指定したものか、
グローバルにインストールしたものかチェックできます。

$ rbenv which rake
/home/hogehoge/railsapp/vendor/bin/rake

binstubs で指定したものを除外する場合は、DISABLE_BINSTUBS=1
を指定します。

$ DISABLE_BINSTUBS=1 rbenv which rake
/home/hogehoge/.rbenv/versions/2.1.0/bin/rake