From 5533eeff239e024539f3ddd5b2ffe3528144beef Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 6 Oct 2018 16:07:45 +0000 Subject: Fixed that test_email raises an error with #deliver_later (#26791). git-svn-id: http://svn.redmine.org/redmine/trunk@17587 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/mailer.rb | 45 ++++----------------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) (limited to 'app') diff --git a/app/models/mailer.rb b/app/models/mailer.rb index ab1a6cf4c..8f4262950 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -107,48 +107,11 @@ class Mailer < ActionMailer::Base "method*, or 3. use a custom Active Job instead of #deliver_later." else args = 'Mailer', @action.to_s, delivery_method.to_s, *@args - DeliveryJob.set(options).perform_later(*args) + ::ActionMailer::DeliveryJob.set(options).perform_later(*args) end end end - class DeliveryJob < ActionMailer::DeliveryJob - module Arguments - extend ActiveJob::Arguments - extend self - - private - - def serialize_argument(argument) - # Ensure that ActiveRecord::Base objects are fully serialized for mail - # sending. This circumvents the globalid gem for this job. - if argument.is_a?(ActiveRecord::Base) - argument.to_yaml - else - super - end - end - - def deserialize_argument(argument) - if argument.is_a?(ActiveRecord::Base) - argument - else - super - end - end - end - - private - - def serialize_arguments(serialized_args) - Arguments.serialize(serialized_args) - end - - def deserialize_arguments(serialized_args) - Arguments.deserialize(serialized_args) - end - end - def process(action, *args) user = args.shift raise ArgumentError, "First argument has to be a user, was #{user.inspect}" unless user.is_a?(User) @@ -701,9 +664,9 @@ class Mailer < ActionMailer::Base # # Example: # test_email => Mail::Message object - def test_email + def test_email(user) @url = url_for(:controller => 'welcome') - mail :to => User.current.mail, + mail :to => user.mail, :subject => 'Redmine test' end @@ -712,7 +675,7 @@ class Mailer < ActionMailer::Base # Example: # Mailer.test_email(user).deliver => send an email to the given user def self.test_email(user) - MultiMessage.new(:test_email).for(user) + MultiMessage.new(:test_email, user).for(user) end # Sends reminders to issue assignees -- cgit v1.2.3