LoginSignup
6
6

More than 3 years have passed since last update.

RailsのDEPRECATION WARNINGを消す

Last updated at Posted at 2019-12-30

事象

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に書き換えていく。

6
6
0

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
6
6