bundleを使っているプロジェクトに自分だけが使いたいgemを入れる方法

自分は便利だから使いたいけど、他の人にまで強制するのはなんだなーって思うgemを開発時に使いたい時どうするかメモ

概要

  • 環境変数BUNDLE_GEMFILEで使用するGemfileを設定できるので、個人用のGemfileを用意する

前提

やりかた

Gemfile.localに個人的に使用したいgemを書く

#Gemfile.local
eval_gemfile "Gemfile"

gem "pry"

環境変数BUNDLE_GEMFILEを設定

echo "export BUNDLE_GEMFILE=./Gemfile.local" >> .envrc

Gemfile.localをglobal gitignoreに追加

リポジトリに入れないように

cat <<EOS >> ~/.gitignore
Gemfile.local
Gemfile.local.lock
EOS

Gemfile.lock も Gemfile.local.lock にしてくれる。便利!!

bundle install

bundle install

感想

  • 本当ならばメンバー全員の合意を受けて必要なgemを入れるべき
  • 自分だけ異なるgemを使うことで発生する問題もある
    • 自分環境だと動くよ問題
    • なので、 こういうことをする場合、CIは必須
  • ただ、自分でも有用性が疑問なので、しばらく試してみて良かったら、みんなにも勧めたいとか言う時に便利かも
  • bundleのissueでも上がった話題らしいけど、いろんな理由でcloseされている

参考

追記

Railsスタイルガイド では、OSXLinuxそれぞれで開発する場合の方法としてグルーピングを推奨していた

# Gemfile
group :darwin do
  gem 'rb-fsevent'
  gem 'growl'
end

group :linux do
  gem 'rb-inotify'
end

config/application.rb に以下を追記して、環境変数RUBY_PLATFORMで使用するgemを決定する

#config/application.rb
platform = RUBY_PLATFORM.match(/(linux|darwin)/)[0].to_sym
Bundler.require(platform)