以前、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