123456789_123456789_123456789_123456789_123456789_

Module: ActiveJob::EnqueueAfterTransactionCommit

Do not use. This module is for internal use only.
Relationships & Source Files
Namespace Children
Modules:
Defined in: activejob/lib/active_job/enqueue_after_transaction_commit.rb

Class Method Summary

Instance Method Summary

Class Method Details

.included(base)

[ GitHub ]

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

def included(base)
  ActiveJob.singleton_class.prepend(ActiveJobMethods)
end

Instance Method Details

#raw_enqueue (private)

[ GitHub ]

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

def raw_enqueue
  if self.class.enqueue_after_transaction_commit
    self.successfully_enqueued = true
    deferred_scheduled_at = scheduled_at
    deferred_queue_name = queue_name
    deferred_priority = priority
    ActiveRecord.after_all_transactions_commit do
      previous_scheduled_at, previous_queue_name, previous_priority = scheduled_at, queue_name, priority
      self.scheduled_at = deferred_scheduled_at
      self.queue_name = deferred_queue_name
      self.priority = deferred_priority
      self.successfully_enqueued = false
      super
    ensure
      self.scheduled_at = previous_scheduled_at
      self.queue_name = previous_queue_name
      self.priority = previous_priority
    end
    self
  else
    super
  end
end