module ActiveJob::Enqueuing::ClassMethods

def job_or_instantiate(*args, &_) # :doc:

:doc:
def job_or_instantiate(*args, &_) # :doc:
  args.first.is_a?(self) ? args.first : new(*args)
end

def perform_later(...)

end
self.enqueue_after_transaction_commit = false
class NotificationJob < ApplicationJob

This behavior can be changed on a per job basis:

+false+ if a callback prevented the job from being enqueued.
will return the job instance like if it was successfully enqueued, but will still return
the transaction is committed, or dropped if it's rolled back. In such case #perform_later
inside an Active Record transaction, then the enqueue is implicitly deferred to after
If Active Job is used conjointly with Active Record, and #perform_later is called

After the attempted enqueue, the job will be yielded to an optional block.

Job#arguments or +false+ if the enqueue did not succeed.
Returns an instance of the job class queued with arguments available in

custom serializers.
GlobalID::Identification instances, although this can be extended by adding
Hash, ActiveSupport::HashWithIndifferentAccess, Array, Range, or
Time, DateTime, ActiveSupport::TimeWithZone, ActiveSupport::Duration,
Integer, Float, NilClass, TrueClass, FalseClass, BigDecimal, Symbol, Date,
Push a job onto the queue. By default the arguments must be either String,
def perform_later(...)
  job = job_or_instantiate(...)
  enqueue_result = job.enqueue
  yield job if block_given?
  enqueue_result
end