LoginSignup
1
3

More than 5 years have passed since last update.

Ruby on Rails で bundle exec を省略できるようにしてみた

Posted at

何故やるのか

  • 毎回打つのメンドいじゃん?

概要

  • プロジェクトのルートディレクトリに居る時は、プロジェクトの gem を使う
  • そうじゃないときは、 ~/.rbenv/shims の下を使う
  • rails コマンドのみ例外
    • Rails 4 からか Rails 5 からかは分からんが、 bundle install --binstubsrails コマンドを上書きすると怒られるようになったらしい

詳細

# この辺は元々ある $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/ にも存在することになるが、まぁよかろ。
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3