Includes the perform_later method for job initialization.

Methods

Instance Public methods

perform_later(...)

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
πŸ“ Source code
# File activejob/lib/active_job/enqueuing.rb, line 68
      def perform_later(...)
        job = job_or_instantiate(...)
        enqueue_result = job.enqueue

        yield job if block_given?

        enqueue_result
      end
πŸ”Ž See on GitHub

Instance Private methods

job_or_instantiate(*args, &_)

πŸ“ Source code
# File activejob/lib/active_job/enqueuing.rb, line 78
        def job_or_instantiate(*args, &_) # :doc:
          args.first.is_a?(self) ? args.first : new(*args)
        end
πŸ”Ž See on GitHub