Rubocop настройка

Добавляем в Gemfile в окружения develop и test

gem ‘rubocop’

По умолчанию в проекте стоят настройки, уже можно прочекать с помощью команды

rubocop

Или даже сделать авторефакторинг

rubocop -a

Можно заметить что spec автоматически не отрефакторится, так как нужно определить настройки

Создаем в корне проекта файл .rubocop.yml

Добавляем в него:

Rails:
Enabled:
true

Теперь spec файлы тоже можно будет отрефакторить в автоматическом режиме.

Так же по умолчанию вы скорее всего увидете в моделях новых комментарий

# frozen_string_literal: true

Что бы его не было добавьте в файл настроек:

Style/FrozenStringLiteralComment:
Enabled:
false

Еще советую увеличить максимальную строку до 120, у меня даже в RubyMine по умолчанию на этом расстоянии стоит линейка, показывающая границу превышения

Собственно добавьте эти настройки:

Metrics/LineLength:
Max:
120

Скорее всего у вас будет много ошибок вида

Missing top-level class documentation comment.

Rubocop хочет что бы вы документировали классы и модули, но зачем документировать код если и так все понятно *tollface*, поэтому вырубаем эту настройку

Style/Documentation:
Enabled:
false

Еще популярна ошибка

Method has too many lines.

То есть Rubocop хочет что бы методы были не больше 10 строк, но как по мне то этого маловато, давайте увеличем до 30

Metrics/MethodLength:
Max:
30

Еще ему не нравился слишком большой секретный токен для приложения в файле config/initializers/secret_token.rb. Пришлось добавить его в исключение

AllCops:
Exclude:
- config/initializers/secret_token.rb

Кстати, при переносах Rubocop хочет что бы было ровно 2 символа, а не 4, как стоит по умолчанию в RubyMine. Ну что ж, Rubocop-у виднее, я поменял настройки IDE.

Последние 5 ошибок которые у меня остались после автоформатирования (и ручного форматирования длинных строк) были:

Assignment Branch Condition size for create is too high.

Это уже лучше отрефакторить вручную

В итоге у меня получился такой файл настроке

AllCops:
Exclude:
- config/initializers/secret_token.rb

Rails:
Enabled:
true

Style/FrozenStringLiteralComment:
Enabled:
false

Metrics/LineLength:
Max:
120

Style/Documentation:
Enabled:
false

Metrics/MethodLength:
Max:
30