From 21d52f2d3f3d83eb888543ec6c2a180e01d17baf Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 23 Jul 2022 12:03:51 +0100 Subject: [PATCH] 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 --- config/initializers/mail_delivery_job.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 config/initializers/mail_delivery_job.rb diff --git a/config/initializers/mail_delivery_job.rb b/config/initializers/mail_delivery_job.rb new file mode 100644 index 0000000000..4bab2000b0 --- /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)