123456789_123456789_123456789_123456789_123456789_

Module: ActiveJob::Enqueuing

Relationships & Source Files
Namespace Children
Modules:
Extension / Inclusion / Inheritance Descendants
Included In:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Defined in: activejob/lib/active_job/enqueuing.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 ]


43
44
45
46
47
48
49
50
51
52
53
54
# File 'activejob/lib/active_job/enqueuing.rb', line 43

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:
  #  - true forces the job to be deferred.
  #  - false forces the job to be queued immediately.
  class_attribute :enqueue_after_transaction_commit, instance_accessor: false, instance_predicate: false, default: false
end

Instance Method Details

#enqueue(options = {})

Enqueues the job to be performed by the queue adapter.

Options

  • :wait - Enqueues the job with the specified delay

  • :wait_until - Enqueues the job at the time specified

  • :queue - Enqueues the job on the specified queue

  • :priority - Enqueues the job with the specified priority

Examples

my_job_instance.enqueue
my_job_instance.enqueue wait: 5.minutes
my_job_instance.enqueue queue: :important
my_job_instance.enqueue wait_until: Date.tomorrow.midnight
my_job_instance.enqueue priority: 10
[ GitHub ]

  
# File 'activejob/lib/active_job/enqueuing.rb', line 112

def enqueue(options = {})
  set(options)
  self.successfully_enqueued = false

  run_callbacks :enqueue do
    raw_enqueue
  end

  if successfully_enqueued?
    self
  else
    false
  end
end

#raw_enqueue (private)

[ GitHub ]

  
# File 'activejob/lib/active_job/enqueuing.rb', line 128

def raw_enqueue
  if scheduled_at
    queue_adapter.enqueue_at self, scheduled_at.to_f
  else
    queue_adapter.enqueue self
  end

  self.successfully_enqueued = true
rescue EnqueueError => e
  self.enqueue_error = e
end