自分は便利だから使いたいけど、他の人にまで強制するのはなんだなーって思うgemを開発時に使いたい時どうするかメモ
概要
- 環境変数
BUNDLE_GEMFILE
で使用するGemfileを設定できるので、個人用のGemfileを用意する
前提
- direnv/direnvを使ってること
やりかた
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されている
参考
- 自分の環境だけで特定のgemを使う方法 - PILOG
- Ruby - Gemfileにないgemを使いたい - Qiita
- BundlerでGemfileを変更せずにローカルの:pathのgemを使う - Qiita
追記
Railsスタイルガイド では、OSXとLinuxそれぞれで開発する場合の方法としてグルーピングを推奨していた
# 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)