フィヨルドブートキャンプでメンターとしてレビューしているときに、rubocopのカリキュラム以降は提出するコードをrubocopを通してから提出するようにお願いしています。

しかし、デフォルトのrubocopだと不便なところがあったのでfjordとしての設定を作りました。

方針は下記の2点です。

  • なるべくrubocopのデフォルトに従う。
  • rails newしたコードで指摘されまくるなど、流石にこれは厳しいという点のみ外す。

gistに置いたので下記のように書けば使えます。

.rubocop.yml:

inherit_from:
  - https://gist.github.com/komagata/9ad19373b9f9059ca52e727fbb7f2944/raw/e3a9bf5db5459a8172f634a677f7dccae66df060/ruby.yml
  - https://gist.github.com/komagata/9ad19373b9f9059ca52e727fbb7f2944/raw/e3a9bf5db5459a8172f634a677f7dccae66df060/rails.yml

require:
  - rubocop-minitest

Fjord rubocop configuration.

ruby用とrails用に分かれているのでrailsを使わない場合はそちらを読み込む必要は無いです。

それぞれgistのrevisionでURLが変わるので更新するには最新のURLを見に行って書き換える必要があります。

rubocopデフォには「おい、それはちょっと口うるさすぎるでしょう?」という項目が結構あって、"複数行ブロックの場合は->じゃなくてlambda使え"というのもその一つ。

% rubocop app/models/comment.rb
Inspecting 1 file
C

Offenses:

app/models/comment.rb:11:26: C: Use the lambda method for multi-line lambdas.
  scope :except_blocked, -> {
                         ^^

でもどのルールをオフにしたらこれが許されるのかわからなかったが、-Dをつければルール名も表示してくれるらしい。

% rubocop -D app/models/comment.rb
Inspecting 1 file
C

Offenses:

app/models/comment.rb:11:26: C: Style/Lambda: Use the lambda method for multi-line lambdas.
  scope :except_blocked, -> {
                         ^^

ほう、Style/Lambdaか。

# .rubocop.yml:
Style/Lambda:
  Enabled: false
% rubocop app/models/comment.rb
Inspecting 1 file
.

1 file inspected, no offenses detected

これで心安らかになった。