Module: AcidicJob::Extensions::ActionMailer

Extended by:
ActiveSupport::Concern
Defined in:
lib/acidic_job/extensions/action_mailer.rb

Instance Method Summary collapse

Instance Method Details

#deliver_acidicly(_options = {}) ⇒ Object Also known as: deliver_transactionally



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/acidic_job/extensions/action_mailer.rb', line 10

def deliver_acidicly(_options = {})
  job_class = ::ActionMailer::MailDeliveryJob

  job_args = [@mailer_class.name, @action.to_s, "deliver_now", @params, *@args]
  # for Sidekiq, this depends on the Sidekiq::Serialization extension
  serialized_job = job_class.new(job_args).serialize
  acidic_identifier = job_class.respond_to?(:acidic_identifier) ? job_class.acidic_identifier : :job_id
  key = IdempotencyKey.new(acidic_identifier).value_for(serialized_job)

  AcidicJob::Run.create!(
    staged: true,
    job_class: job_class.name,
    serialized_job: serialized_job,
    idempotency_key: key
  )
end