Gemfile の書き方を見直した

Gemfile を記述するときの自分のルールを見直したので言語化しておく。

ルール

  1. 決まった順序で定義しなければいけない Gem は上部に書く
  2. 順序に依存しない Gem は名前の辞書順に書く
  3. コメントも含めて 1 つの Gem あたりに 1行使う
  4. group が必要なものは group メソッドを使って下部に書く
  5. group も辞書順に書く

サンプルコード

実際のアプリケーションでは、もう少し込みいったコードになるはず。

source "https://rubygems.org"
# Fixed order
gem "rails", "5.1.4"
# Alphabetical order
gem "aaa"
gem "bbb", "1.2.3" # https://github.com/bbb/bbb/issues/123
gem "ccc"
group :xxx do
gem "ddd"
gem "eee"
gem "fff"
end
group :xxx, :yyy do
gem "ggg"
gem "hhh"
gem "iii"
end
group :yyy do
gem "jjj"
gem "kkk"
gem "lll"
end

背景

以下のようなことを念頭に置いたルールになっている。

  • 誰が書いても同じようなコードになる
  • 編集するときにどう書けば良いか迷わない

順序に関する注釈

Bundler は Gemfile に書かれている順に require していくので、例えば if defined?(Rails) のようなコードが require したときに実行される Gem が存在する場合、それより前に Rails を読み込んでおく必要が出てくる。そのため、上例のように辞書順のルールを超えて先に読み込むべき Gem が存在するケースが出てくる。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.