事象
Railsのバージョンを5から6にアップグレードしたら、尋常ではない量のDEPRECATION WARNINGが出てしまった。
DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the `:カラム名` attribute in `モデル名` model, pass `case_sensitive: true` option explicitly to the uniqueness validator. (called from block (3 levels) in <main> at /***/spec/factories/***.rb:6)
Rails6からUniqueness validatorの仕様が変更されたことによる警告だった。
参考
Rails 6.0でDeprecatedになるActive Recordの振る舞い3つ
しかし、Uniqueness validatorを使っている箇所すべてで警告が表示されるので、RSpecを流すと実行結果がとんでもないことになる。
他にもいくつか警告が表示されていたが、自分のアプリではいずれも問題ないことが確認できた。
その時点で警告は無意味となり、あまりにも見づらいので非表示にしたい。
対応
不要な警告がログに出力されないよう、config/application.rb
に以下コードを追加した。
ActiveSupport::Deprecation.silenced = true if Rails.version == '6.0.2'
これで、当該アプリのバージョンが6.0.2
なら、DEPRECATION WARNINGが出力されなくなる。
今後Railsをアップグレードする際も、当該バージョンでdeprecatedになったものの確認がすべて完了してから非表示にしたいので、6.0.2
と直に書いている。
6.0.2
-> 6.0.3
に上げて新たな警告が出ていれば、内容を確認(対応)後にこちらも6.0.3
に書き換えていく。