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
This commit is contained in:
Tom Hughes 2022-07-23 12:03:51 +01:00
parent 273cb9e00a
commit 21d52f2d3f

View file

@ -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)