Sha256: 0d46f436e9d10cf82ed6959055fafd13792b50311db70b73432d0e697a08d4ca

Contents?: true

Size: 1.02 KB

Versions: 18

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module AcidicJob
  module Extensions
    module ActiveJob
      extend ActiveSupport::Concern

      concerning :Serialization do
        class_methods do
          def serialize_with_arguments(*args, **kwargs)
            job_or_instantiate(*args, **kwargs).serialize
          end
        end

        def serialize_job(*_args, **_kwargs)
          serialize
        end
      end

      class_methods do
        def perform_acidicly(*args, **kwargs)
          raise UnsupportedExtension unless defined?(::ActiveJob) && self < ::ActiveJob::Base

          serialized_job = serialize_with_arguments(*args, **kwargs)
          key = IdempotencyKey.new(acidic_identifier).value_for(serialized_job)

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

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
acidic_job-1.0.0.pre29 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre28 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre27 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre26 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre25 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre24 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre23 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre22 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre21 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre20 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre19 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre18 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre17 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre16 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre15 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre14 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre13 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre12 lib/acidic_job/extensions/active_job.rb