先日、RuboCop先生がRailsのschemaファイルに対し、
ナンセンスな自動修正をしてきたので、その対処を備忘録として残す。
Railsの「schema.rb」のバージョン日時表記
Railsのデータベース管理の要とも言える「schema.rb」ファイルには、
下記のように「YYYY_MM_DD_hhmmss」形式でバージョン日時が記載されている。
ActiveRecord::Schema.define(version: 2022_05_24_023952)
この表記、残念ながら初期設定のRuboCop先生の逆鱗に触れてしまう。
RuboCop先生のご指摘
先生「たくさん数字が並んでるときは、
3桁ごとに"_"で区切って書いてくれないと困ります!」
(例:1000000 → 1_000_000)
ファイル保存で先生に自動修正された結果・・・
見事に3桁ごとに区切られる
・・・んー、マイグレーションのタイミングが分かりにくい^^;
この状態でも、
- マイグレーション / ロールバックには支障がない
- バージョン日時が更新されると「YYYY_MM_DD_hhmmss」形式に戻る
ことは確認できたけど、いかんせん青波線とターミナルのエラー表示が気になるので、
RuboCopの変更を試してみる。
RuboCop設定変更
設定を変えるべく下記コードを追記
# 18文字以上の場合のみ"_"区切りを必須にする(※YYYY_MM_DD_hhmmssが17文字のため)
Style/NumericLiterals:
MinDigits: 18
設定変更後にマイグレーションを試すと・・・
先生「ぎりぎり見逃してあげましょう」
無事お咎めがなくなった。^^
今後・・・
チーム開発などで3桁区切り記載がマストの場合は、
上記設定を変更することになりそうだけど、
しばらくはこの設定のまま勉強を続けていく予定。
(うまくschema.rbだけ見逃してれないものかな・・・)
※追記(5/29 9:30)
コメントにて
「rubocop-rails」なら「schema.rb」を見逃してくれる
という助言をいただきました。
今後のRails開発のためにも、上記の設定変更よりは「rubocop-rails」の利用の方がよいので、
同じ悩みを感じてる方は「rubocop-rails」の導入をご検討ください。
※参考