10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/acidic_job/extensions/action_mailer.rb', line 10
def deliver_acidicly(_options = {}, idempotency_key: nil, unique_by: nil)
job_class = ::ActionMailer::MailDeliveryJob
job_args = [@mailer_class.name, @action.to_s, "deliver_now", @params, *@args]
serialized_job = job_class.new(job_args).serialize
acidic_identifier = job_class.respond_to?(:acidic_identifier) ? job_class.acidic_identifier : :job_id
key = if idempotency_key
idempotency_key
elsif unique_by
IdempotencyKey.generate(unique_by: unique_by, job_class: job_class.name)
else
IdempotencyKey.new(acidic_identifier).value_for(serialized_job)
end
AcidicJob::Run.create!(
staged: true,
job_class: job_class.name,
serialized_job: serialized_job,
idempotency_key: key
)
end
|