- 公開日
Railsと同じRuboCopの設定が利用できるrubocop-rails gemを作った
【追記】本記事で紹介しているgem, rubocop-rails
は公式RuboCopチームの要望により、rubocop-rails_configというgemにRenameされました。
本gemご利用の方は下記のrubocop-rails_config
のご利用をお願いします。
toshimaru/rubocop-rails_config
Blogged. RuboCopチームにgemの名前を譲った話 - Hack Your Design! https://t.co/vumSGBK3UN
— toshimaru (@toshimaru_e) July 17, 2018
Railsとほとんど同じRuboCopの設定が利用できるrubocop-railsというgemを作りましたので紹介します。
Railsのrubocopと同じ設定を簡単に適用できるgemを作ったよ
— toshimaru (@toshimaru_e) January 13, 2017
toshimaru/rubocop-rails: Code style checking for Ruby on Rails project https://t.co/DnTRKtJc9j
モチベーション
Rubyの静的コード解析の定番といえばRuboCopですよね。ですがRuboCopの設定ファイルrubocop.yml
の設定作業って結構大変じゃないですか?
RuboCopはデフォルトだと結構うるさすぎることが多いのでプロジェクト・チームに応じて何かしら設定はカスタマイズすると思います。しかし1つ1つ設定項目毎にチームのコンセンサスを取るのは非常にダルい。チームの一人が持ち込んだ<俺の考える最強のRuboCop設定>に従うという手もありますが「誰がお前の作った設定に従うか!」という気持ちも無くはない。
「何かしらRuboCop設定のレールが欲しいよね〜 」というところで閃き、「だったらrailsチームの用意した公式rubocop.yml
を使えばいいじゃない」ということで冒頭のRailsとほぼ同じ設定を持ったrubocop-rails gemを作りました。
使い方
使い方は rubocop-rails
をinstallした後に、下記の設定を記述した rubocop.yml
を用意する。
inherit_gem:
rubocop-rails:
- config/rails.yml
オーバーライドしたい設定、追加したい設定があれば、適宜同じrubocop.yml
内に設定を追加していく。
実際使ってみてどうか
実際使ってみるとうるさすぎず、しかしコードスタイルとしてきっちり統一させたいところは統一されており、使い心地はなかなか悪くないです。
また副次効果として、普段からこのgemの設定に慣れておくと、Rails本体にコントリビュートするときにRailsのrubocop設定違反にならないコードを書けて便利。
こんなRuboCop設定もあるよ
他の<いい感じ>に設定されたRuboCop設定も紹介します。
- GitHubの場合: github/rubocop-github
- Siderの場合: sider/meowcop
これらの設定はきちんとチーム・会社でディスカッションされた上で作られたものだと思いますので、こちらもあわせて導入を検討してみてもいいかもしれません。