24
4

More than 1 year has passed since last update.

Railsの「schema.rb」の日時表記とRuboCop設定

Last updated at Posted at 2022-05-27

先日、RuboCop先生がRailsのschemaファイルに対し、
ナンセンスな自動修正をしてきたので、その対処を備忘録として残す。

Railsの「schema.rb」のバージョン日時表記

Railsのデータベース管理の要とも言える「schema.rb」ファイルには、
下記のように「YYYY_MM_DD_hhmmss」形式でバージョン日時が記載されている。

schema.rb
ActiveRecord::Schema.define(version: 2022_05_24_023952)

この表記、残念ながら初期設定のRuboCop先生の逆鱗に触れてしまう。

RuboCop先生のご指摘

エラー発生中.png

先生「たくさん数字が並んでるときは、
3桁ごとに"_"で区切って書いてくれないと困ります!」
(例:1000000 → 1_000_000)

ファイル保存で先生に自動修正された結果・・・

悲しい修正のコピー.jpg
見事に3桁ごとに区切られる
・・・んー、マイグレーションのタイミングが分かりにくい^^;

この状態でも、

  • マイグレーション / ロールバックには支障がない
  • バージョン日時が更新されると「YYYY_MM_DD_hhmmss」形式に戻る

ことは確認できたけど、いかんせん青波線とターミナルのエラー表示が気になるので、
RuboCopの変更を試してみる。

RuboCop設定変更

設定を変えるべく下記コードを追記

.rubocop.yml
# 18文字以上の場合のみ"_"区切りを必須にする(※YYYY_MM_DD_hhmmssが17文字のため) 
Style/NumericLiterals:
  MinDigits: 18

設定変更後にマイグレーションを試すと・・・

エラー解消のコピー.jpg

先生「ぎりぎり見逃してあげましょう」

無事お咎めがなくなった。^^

今後・・・

チーム開発などで3桁区切り記載がマストの場合は、
上記設定を変更することになりそうだけど、
しばらくはこの設定のまま勉強を続けていく予定。

(うまくschema.rbだけ見逃してれないものかな・・・)

※追記(5/29 9:30)

コメントにて
「rubocop-rails」なら「schema.rb」を見逃してくれる
という助言をいただきました。
今後のRails開発のためにも、上記の設定変更よりは「rubocop-rails」の利用の方がよいので、
同じ悩みを感じてる方は「rubocop-rails」の導入をご検討ください。

※参考

24
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
4