RuboCop Rails 2.3.0 をリリースした

RuboCop Rails 2.3.0 をリリースした。

github.com

New features

#78: Add new Rails/EnumHash cop. (@fedeagripa, @brunvez, @santib)

pocke さんによる提案を Rootstrap 社のオープンソースハッカソンで実装された cop となる。

bad と good は以下で、例えば中間の要素を削除した場合にデータベースへの値がずれることを予防するため Hash 記法を推奨するもの。

# bad
enum status: [:active, :archived]

# good
enum status: { active: 0, archived: 1 }

auto-correct 付き。

Bug fixes

#53: Fix a false positive for Rails/SaveBang when implicitly return using finder method and creation method connected by ||. (@koic)

Rails/SaveBang cop でデフォルトとなっている AllowImplicitReturn: true で暗黙的な戻り値となる find(**opts) || #{method}(**opts) のような || 演算子による戻り値のケースでの false positive を修正している。

#97: Fix two false negatives for Rails/EnumUniqueness. 1. When enum name is not a literal. 2. When enum has multiple definitions. (@santib)

Rails/EnumHash cop のレビューの過程で pocke さんが指摘した既存の Rails/EnumUniqueness cop にある false negative を修正している。

Changes

#98: Mark Rails/ActiveRecordAliases as SafeAutoCorrect false and disable autocorrect by default. (@prathamesh-sonpatki)

Rails/ActiveRecordAliases cop が自分で定義した update_attributesupdate に auto-correct するということで、Rails イシューチームメンバーより SafeAutoCorrect: false と変更している。

SafeAutoCorrect については以下のエントリを参照のこと。

koic.hatenablog.com

#101: Mark Rails/SaveBang as SafeAutoCorrect false and disable autocorrect by default. (@prathamesh-sonpatki)

同上で Rails/SaveBang cop を SafeAutoCorrect: false と変更している。

#102: Include create_or_find_by in Rails/SaveBang cop. (@MaximeLaurenty)

Rails/SaveBang cop に対して、Rails 6.0 で導入される create_or_find_by への対応を含めている。