はじめに
こんにちは、Gakken LEAP のバックエンドエンジニアの mizuno です。
先日、Rails 7.2 にアップデートした際、大量の「DEPRECATION WARNING」が表示されました。
その対応方法を共有します。
非推奨警告の内容
警告文の全文は以下の通りです。
DEPRECATION WARNING: Defining enums with keyword arguments is deprecated and will be removed
in Rails 8.0. Positional arguments should be used instead:
enum :sample_enum, {:example_one=>0, :example_two=>1}
(called from <class:SampleClass> at /path/to/your/project/app/models/sample_class.rb:5)
非推奨となる理由と対応方法
Rails 8.0 では、enum
の定義にキーワード引数を使う方法が廃止され、代わりに位置引数を使う方法が推奨されています。
そのため、以下のようにコードを修正する必要があります。
- 変更前の書き方
enum sample_enum: { example_one: 0, example_two: 1 }
- 変更後の書き方
enum :sample_enum, { example_one: 0, example_two: 1 }
また、_prefix
や _default
オプションについては、アンダースコアなしの prefix
や default
を使う形に変更が必要です。
- 例
enum :sample_enum, { example_one: 0, example_two: 1 }, prefix: true, default: :example_one
まとめ
警告が大量に出て驚きましたが、対応箇所はすべて警告文で明示されるため、順次修正すれば問題なく解消できました。
Rails 8.0 への移行を見据え、早めに対応しておくと良いでしょう。
エンジニア募集
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!