何故やるのか
- 毎回打つのメンドいじゃん?
概要
- プロジェクトのルートディレクトリに居る時は、プロジェクトの gem を使う
- そうじゃないときは、
~/.rbenv/shims
の下を使う -
rails
コマンドのみ例外- Rails 4 からか Rails 5 からかは分からんが、
bundle install --binstubs
でrails
コマンドを上書きすると怒られるようになったらしい
- Rails 4 からか Rails 5 からかは分からんが、
詳細
# この辺は元々ある $PATH の設定ね
export PATH=/bin:/usr/bin:/usr/local/bin
export PATH=$PATH:/hoge/fuga/piyo
# この下がポイント
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
export PATH=.git/safe/../../bin:.git/safe/../../vendor/bundle/bin:$PATH
事前準備
cd /path/to/project
mkdir -p .git/safe
本題
bundle install --binstubs vendor/bundle/bin
- ポイントは
$PATH
の解決順- 先勝ちなので、優先したい順に書く
-
rbenv init -
によって$PATH
が上書きされるので、その後に書く
- あとは、ダミーディレクトリの作成
- 別に
.git/safe
じゃなくても良いけど、 コチラの記事 に倣った - このディレクトリがあるプロジェクトの場合、
./bin/
と./vendor/bundle/bin/
にパスが通ることになる
- 別に
- こうしてあげると、
rails
コマンドは./bin/rails
を、 gem のコマンドは./vendor/bundle/bin/***
を参照するようになり、rails
コマンドに怒られることもない-
rails
コマンドはbin/
にもvendor/bundle/bin/
にも存在することになるが、まぁよかろ。
-