Sha256: e06b385139681ce3c5cc76a83e3219a085d1adac158ccd727281382d9de9e42a

Contents?: true

Size: 1003 Bytes

Versions: 9

Compression:

Stored size: 1003 Bytes

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)

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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
acidic_job-1.0.0.pre9 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre8 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre7 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre6 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre5 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre4 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre3 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre2 lib/acidic_job/extensions/active_job.rb
acidic_job-1.0.0.pre1 lib/acidic_job/extensions/active_job.rb