From: Tom Hughes Date: Sat, 23 Jul 2022 11:03:51 +0000 (+0100) Subject: Monkey patch MailDeliveryJob to work with delayed_job under ruby 3 X-Git-Tag: live~2268 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/21d52f2d3f3d83eb888543ec6c2a180e01d17baf?hp=273cb9e00a9d1e553d0d24bec9dcc8957a3f85a9 Monkey patch MailDeliveryJob to work with delayed_job under ruby 3 The delayed_job gem does not currently perserve keyword arguments properly leading to errors when running under ruby 3 and try to run a job that requires them. This affects our deferred mail deliveries so we monkey patch the mail delivery job to unpack the hash from the normal arguments and use it to provide the expected keyword arguments. https://github.com/collectiveidea/delayed_job/issues/1134 --- diff --git a/config/initializers/mail_delivery_job.rb b/config/initializers/mail_delivery_job.rb new file mode 100644 index 000000000..4bab2000b --- /dev/null +++ b/config/initializers/mail_delivery_job.rb @@ -0,0 +1,13 @@ +module OpenStreetMap + module ActionMailer + module MailDeliveryJob + def perform(mailer, mail_method, delivery_method, *args, **kwargs) + kwargs = args.pop if kwargs.empty? && args.last.is_a?(Hash) + + super(mailer, mail_method, delivery_method, *args, **kwargs) + end + end + end +end + +ActionMailer::MailDeliveryJob.prepend(OpenStreetMap::ActionMailer::MailDeliveryJob)