mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-19 23:11:12 +00:00
Ensure that ActiveRecord::Base objects are fully serialized for mail sending (#26791).
Patch by Holger Just. git-svn-id: http://svn.redmine.org/redmine/trunk@17585 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
5416ed1022
commit
323ef3182b
@ -107,11 +107,48 @@ class Mailer < ActionMailer::Base
|
|||||||
"method*, or 3. use a custom Active Job instead of #deliver_later."
|
"method*, or 3. use a custom Active Job instead of #deliver_later."
|
||||||
else
|
else
|
||||||
args = 'Mailer', @action.to_s, delivery_method.to_s, *@args
|
args = 'Mailer', @action.to_s, delivery_method.to_s, *@args
|
||||||
::ActionMailer::DeliveryJob.set(options).perform_later(*args)
|
DeliveryJob.set(options).perform_later(*args)
|
||||||
end
|
end
|
||||||
end
|
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)
|
def process(action, *args)
|
||||||
user = args.shift
|
user = args.shift
|
||||||
raise ArgumentError, "First argument has to be a user, was #{user.inspect}" unless user.is_a?(User)
|
raise ArgumentError, "First argument has to be a user, was #{user.inspect}" unless user.is_a?(User)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user