direnvとbundle install --binstubsでbundle execを省略する術
bundle install した場合、毎回 bundle exec と打つのは面倒だ。 alias で be とかにしても、それすら無い方が心地よい。
ただし bundle exec を省略するためにややこしいことはしたくない。ダーティなのもいやだ。
そんなことを思っていた僕はこの direnv + bundle install --binstubs の方法に落ち着いている。
まずは --binstubs 付きで bundle install する。いつもやるのはこんな感じだ。alias しておくとよい。 これで vendor/bin 配下で実行可能な状態でイントールできる。
bundle install --path vendor/bundle --binstubs vendor/bin --without production --jobs=4
このままだと vendor/bin にパスが通っていないので、そこで direnv を使う。
direnv は .envrc に環境変数を書いて置いておくと、そのディレクトリ配下では .envrc の内容を有効にしてくれる。というもので、たとえば親ディレクトリに抜けたりするとまた元通り、.envrc の内容は無効な状態に戻る。
インストールは簡単で、たとえば ghq を使っているとこんな感じだ。
ghq get zimbatm/direnv
cd ~/src/github.com/zimbatm/direnv
sudo make install
.envrc には、こんな感じで書いてプロジェクトルートなどに置いておく。
PATH=${PWD}/bin:${PWD}/vendor/bin:${PATH}
こんな風に聞かれた場合には、 direnv allow
と入力することで .envrc の内容が有効になる。
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.
これで bundle exec を入力せずやっていける。 好みで .gitignore に .envrc や vendor/bin を追加しておくとよいかもしれない。