以前、Gemfile を編集せずに任意の gem を追加していじる2つの方法について書いたがその3つ目。
Gemfile.local メソッドと呼ぶ(ことにする)
Gemfile に以下のようなコードを追加する。
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exist?(local_gemfile)
puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(local_gemfile)
end
.gitignore に Gemfile.local を追加してコミットされないようにする。これだけ。
Gemfile.local
あとは Gemfile.local に好きな gem を追加して開発することができるようになる。例えばこんなん。
# Gemfile.local
gem 'byebug'
プロダクトがこの仕組みをサポートしていないと使えないので、導入の敷居は高い。
実際にやっているプロダクトには tDiary とか redmine とかがある。
Fluentd にも取り入れた → Support Gemfile.local by sonots Pull Request #538 fluent/fluentd