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
--- /dev/null
+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)