123456789_123456789_123456789_123456789_123456789_

Module: ActiveJob::EnqueueAfterTransactionCommit

Do not use. This module is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Defined in: activejob/lib/active_job/enqueue_after_transaction_commit.rb

Class Method Summary

::ActiveSupport::Concern - Extended

class_methods

Define class methods from given block.

included

Evaluate given block in context of base class, so that you can write class macros here.

prepended

Evaluate given block in context of base class, so that you can write class macros here.

append_features, prepend_features

Instance Method Summary

DSL Calls

included

[ GitHub ]


7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'activejob/lib/active_job/enqueue_after_transaction_commit.rb', line 7

included do
  ##
  # :singleton-method:
  #
  # Defines if enqueueing this job from inside an Active Record transaction
  # automatically defers the enqueue to after the transaction commits.
  #
  # It can be set on a per job basis:
  #  - `:always` forces the job to be deferred.
  #  - `:never` forces the job to be queued immediately.
  #  - `:default` lets the queue adapter define the behavior (recommended).
  class_attribute :enqueue_after_transaction_commit, instance_accessor: false, instance_predicate: false, default: :never
end

Instance Method Details

#raw_enqueue (private)

[ GitHub ]

  
# File 'activejob/lib/active_job/enqueue_after_transaction_commit.rb', line 22

def raw_enqueue
  after_transaction = case self.class.enqueue_after_transaction_commit
  when :always
    true
  when :never
    false
  else # :default
    queue_adapter.enqueue_after_transaction_commit?
  end

  if after_transaction
    self.successfully_enqueued = true
    ActiveRecord.after_all_transactions_commit do
      self.successfully_enqueued = false
      super
    end
    self
  else
    super
  end
end