Travis のビルド時に別のアプリに cd して bundle install しようとしても、もともとのビルド対象の Gemfeil を見にいってしまって、意図通りに動かない事がある。それを解決したのでメモ。
問題
具体的にはこんな感じのディレクトリ構成で、
my_rails_app
  |
  +- mock_rails_app/
テストを実行する前に Rails.root 直下にあるモックの Rails アプリを動かしたい。
spec_helper.rb でテスト実行前に起動してテスト実行後に殺すようにしてるが、動かす前には bundle install しておきたいので travis.yml にはこんな感じで書いておいた。
before_script:
  - pushd mock_rails_app && bundle install && popd
で、これがうまく動かない。
mock_rails_app に cd してるはずなのに、my_rails_app 直下の Gemfile を見にいってしまっているらしい。
解決方法
これを解決するには、こう書くと良かった。
before_script:
  - pushd mock_rails_app && BUNDLE_GEMFILE=$(pwd)"/Gemfile" bundle install && popd
Budnler は環境変数 BUNDLE_GEMFILE で指定された Gemfile を見に行くらしい。
Travis は実行前に BUNDLE_GEMFILE を設定してあったりするのだろうか…