class ActiveJob::QueueAdapters::AbstractAdapter

forms the abstraction layer which makes this possible.
Active Job supports multiple job queue systems. ActiveJob::QueueAdapters::AbstractAdapter
= Active Job Abstract Adapter

def enqueue(job)

def enqueue(job)
  raise NotImplementedError
end

def enqueue_at(job, timestamp)

def enqueue_at(job, timestamp)
  raise NotImplementedError
end