TL;DR
Bundler/GemComment: Enabled: true OnlyFor: - git - github - version_specifiers
目的
私はGemfileではなるべくバージョンを指定せず、bundle update
によって常に最新のgemが使われることを意識しています。
# Gemfile # bad gem 'rubocop', '0.93.1' # bad gem 'rubocop', '~> 0.93' # good gem 'rubocop'
ところが、なにかしらの理由で最新のgemを使えないケースもあります。 そのような場合には仕方なくバージョンを指定したり、forkしたgitリポジトリを直接指定したりします。
つまり、バージョンを指定しているケースには全て理由があります。(それも、ほとんどはworkaround的な理由です)
その理由が失われないようにするため、Gemfileでバージョンやgitリポジトリを指定する際には必ずコメントを書くようにしたいと考えています。 これは記事冒頭のRuboCopの設定をすると実現できます。
設定の解説
簡単に設定を解説します。 冒頭の設定を再掲します。
Bundler/GemComment: Enabled: true OnlyFor: - git - github - version_specifiers
まず、Bundler/GemComment
copはデフォルトでは無効であるため、Enabled: true
を指定して有効にする必要があります。
また、このCopはデフォルトでは全てのgem
メソッド呼び出しに警告を出します。
これを「バージョン指定があるもの、もしくはgitリポジトリ指定があるもの」に限定するため、OnlyFor
を設定しています。
以上の設定で、Gemfileでバージョン指定しているけどコメントがない場合に、RuboCopが警告するようになります。 似た方針でGemfile内でバージョン指定を行っている方は、この設定をしてみてはいかがでしょうか。
なお、古いバージョンのBundler/GemComment
copにはバグがあるため、RuboCop v0.90.0 以上の使用をおすすめします。