Sha256: 6de888afec114f27affbcc6d5fb57842a0a1369dd2cc92dab86430b6f17715cf

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module AcidicJob
  module Extensions
    module ActionMailer
      extend ActiveSupport::Concern

      def deliver_acidicly(_options = {}, unique_by: nil)
        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
        # use either [1] provided uniqueness constraint or [2] computed key
        key = if 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
      alias deliver_transactionally deliver_acidicly
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acidic_job-1.0.0.pre11 lib/acidic_job/extensions/action_mailer.rb