たとえば Travis CI は CI 固有の Gemfile を指定することでインストールする gem の数を減らしたり、などの方法をとることができる。
ほかにも、たとえば Rails の複数のバージョンでアプリケーションを実行したいときなど、(Bundler の group を使うより) Gemfile をわけるシチュエーションは考えられる。
Gemfile で定義されている依存のマージを行いたい、というときにどうすればよいか。
eval_gemfile
Gemfile を評価する場合、eval_gemfile(gemfile)
で評価する。
dependencies
gem
メソッドで追加された依存 gem は dependencies
というメソッドが記憶している。
dependencies は Gem::Dependency のインスタンスを含む配列である。
やりかた
Gemfile
gem 'rspec'
gem 'simplecov'
gemfiles/travis.Gemfile
eval_gemfile File.expand_path(File.join(File.dirname(__FILE__), '../Gemfile'))
ignored_gems = %w(simplecov)
dependencies.delete_if {|_| ignored_gems.include?(_.name) }
command
bundle install --gemfile gemfiles/travis.Gemfile