module ActiveJob

def self.deprecator # :nodoc:

:nodoc:
def self.deprecator # :nodoc:
  @deprecator ||= ActiveSupport::Deprecation.new
end

def self.gem_version

Returns the currently loaded version of Active Job as a +Gem::Version+.
def self.gem_version
  Gem::Version.new VERSION::STRING
end

def self.version

Returns the currently loaded version of Active Job as a +Gem::Version+.
def self.version
  gem_version
end

def adapter_name(adapter) # :nodoc:

:nodoc:
def adapter_name(adapter) # :nodoc:
  return adapter.queue_adapter_name if adapter.respond_to?(:queue_adapter_name)
  adapter_class = adapter.is_a?(Module) ? adapter : adapter.class
  "#{adapter_class.name.demodulize.delete_suffix('Adapter')}"
end

def instrument_enqueue_all(queue_adapter, jobs)

def instrument_enqueue_all(queue_adapter, jobs)
  payload = { adapter: queue_adapter, jobs: jobs }
  ActiveSupport::Notifications.instrument("enqueue_all.active_job", payload) do
    result = yield payload
    payload[:enqueued_count] = result
    result
  end
end

def perform_all_later(*jobs)

successfully_enqueued and/or enqueue_error on the passed-in job instances.
Queue adapters may communicate the enqueue status of each job by setting
Push many jobs onto the queue at once without running enqueue callbacks.
def perform_all_later(*jobs)
  jobs.flatten!
  jobs.group_by(&:queue_adapter).each do |queue_adapter, adapter_jobs|
    instrument_enqueue_all(queue_adapter, adapter_jobs) do
      if queue_adapter.respond_to?(:enqueue_all)
        queue_adapter.enqueue_all(adapter_jobs)
      else
        adapter_jobs.each do |job|
          job.successfully_enqueued = false
          if job.scheduled_at
            queue_adapter.enqueue_at(job, job.scheduled_at.to_f)
          else
            queue_adapter.enqueue(job)
          end
          job.successfully_enqueued = true
        rescue EnqueueError => e
          job.enqueue_error = e
        end
        adapter_jobs.count(&:successfully_enqueued?)
      end
    end
  end
  nil
end