Comment corriger undefined method address_list dans Rails 6.x et 7.x

Le problème

L’autre jour, j’ai rencontré un problème où j’ai vu cette erreur :

# mail.address_list
NoMethodError: undefined method `address_list'

L’erreur provenait de cette ligne : https://github.com/rails/rails/blob/6-1-stable/actionmailbox/lib/action_mailbox/mail_ext/addresses.rb#L5-L7.

Comme j’aime souvent le faire, je révise périodiquement les dépendances de gems dans une application et les mets à jour pour garder les choses, eh bien… à jour.

Dans cette situation, j’ai mis à jour la gem mail vers la version 2.8.x. Il semble que c’était la cause première du problème.

Il s’avère que lorsque la gem mail a été publiée, elle avait cassé Rails : https://github.com/rails/rails/pull/46643. Le address_list ne faisait plus partie de la gem mail nouvellement publiée.

La solution

Il semble que d’autres avaient aussi le même problème, et une solution a été rétroportée vers Rails 6-1 et 7-0 stable :

Au moment d’écrire ces lignes, ces versions n’ont pas encore été publiées. Donc, une correction temporaire pourrait être de rétrograder mail de 2.8.0 à 2.7.x.

Alternativement, on pourrait utiliser 6-1 ou 7-0 stable et référencer ces versions dans le Gemfile. On s’attend à ce que cette correction soit disponible dans Rails 6.1.8 et 7.0.5 lorsqu’ils seront publiés.