Rails 6.xと7.xでundefined method address_listを修正する方法
問題
先日、このようなエラーに遭遇しました:
# mail.address_list
NoMethodError: undefined method `address_list'
エラーはこの行から来ていました:https://github.com/rails/rails/blob/6-1-stable/actionmailbox/lib/action_mailbox/mail_ext/addresses.rb#L5-L7
私がよくやるように、定期的にアプリのgem依存関係をレビューし、最新の状態に保つために更新しています。
この状況では、mail gemをバージョン2.8.xに更新しました。これが問題の根本原因だったようです。
判明したことに、mail gemがリリースされた時、Railsを壊していました:https://github.com/rails/rails/pull/46643。address_listは新しくリリースされたmail gemの一部ではなくなっていました。
解決策
他の人も同じ問題を抱えていたようで、解決策がRails 6-1と7-0 stableにバックポートされました:
- https://github.com/rails/rails/commit/f5463f314886016fb40199d1265cacddf64ea357
- https://github.com/rails/rails/commit/05133ee198213ba1fc3b8ac8323646ffee60fd62
この執筆時点では、これらのバージョンはまだリリースされていません。そのため、一時的な修正としてmailを2.8.0から2.7.xにダウングレードすることが考えられます。
あるいは、6-1または7-0 stableを使用し、Gemfileでそれらのバージョンを参照することもできます。この修正はRails 6.1.8と7.0.5がリリースされた時に利用可能になると予想されます。