Module: ActiveJob::Enqueuing::ClassMethods
Relationships & Source Files | |
Defined in: | activejob/lib/active_job/enqueuing.rb |
Overview
Includes the #perform_later method for job initialization.
Instance Method Summary
-
#perform_later {|job| ... }
Push a job onto the queue.
- #job_or_instantiate(*args, &_) private
Instance Method Details
#job_or_instantiate(*args, &_) (private)
[ GitHub ]# File 'activejob/lib/active_job/enqueuing.rb', line 91
def job_or_instantiate(*args, &_) # :doc: args.first.is_a?(self) ? args.first : new(*args) end
#perform_later {|job| ... }
Push a job onto the queue. By default the arguments must be either ::String
, ::Integer
, ::Float
, ::NilClass
, ::TrueClass
, ::FalseClass
, ::BigDecimal
, ::Symbol
, ::Date
, ::Time
, ::DateTime
, ::ActiveSupport::TimeWithZone
, ::ActiveSupport::Duration
, ::Hash
, ::ActiveSupport::HashWithIndifferentAccess
, ::Array
, ::Range
, or GlobalID::Identification
instances, although this can be extended by adding custom serializers.
Returns an instance of the job class queued with arguments available in Job#arguments
or false
if the enqueue did not succeed.
After the attempted enqueue, the job will be yielded to an optional block.
If Active Job is used conjointly with Active Record, and #perform_later
is called inside an Active Record transaction, then the enqueue is implicitly deferred to after the transaction is committed, or dropped if it’s rolled back. In such case #perform_later
will return the job instance like if it was successfully enqueued, but will still return false
if a callback prevented the job from being enqueued.
This behavior can be changed on a per job basis:
class NotificationJob < ApplicationJob
self.enqueue_after_transaction_commit = false
end
# File 'activejob/lib/active_job/enqueuing.rb', line 81
def perform_later(...) job = job_or_instantiate(...) enqueue_result = job.enqueue yield job if block_given? enqueue_result end