class Delayed::Backend::JobPreparer

Attributes

args[R]
options[R]

Public Class Methods

new(*args) click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 6
def initialize(*args)
  @options = args.extract_options!.dup
  @args = args
end

Public Instance Methods

prepare() click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 11
def prepare
  set_payload
  set_queue_name
  set_priority
  handle_deprecation
  options
end

Private Instance Methods

handle_deprecation() click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 38
def handle_deprecation
  if args.size > 0
    warn '[DEPRECATION] Passing multiple arguments to `#enqueue` is deprecated. Pass a hash with :priority and :run_at.'
    options[:priority] = args.first || options[:priority]
    options[:run_at]   = args[1]
  end

  # rubocop:disable GuardClause
  unless options[:payload_object].respond_to?(:perform)
    raise ArgumentError, 'Cannot enqueue items which do not respond to perform'
  end
  # rubocop:enabled GuardClause
end
set_payload() click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 21
def set_payload
  options[:payload_object] ||= args.shift
end
set_priority() click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 33
def set_priority
  queue_attribute = Delayed::Worker.queue_attributes[options[:queue]]
  options[:priority] ||= (queue_attribute && queue_attribute[:priority]) || Delayed::Worker.default_priority
end
set_queue_name() click to toggle source
# File lib/delayed/backend/job_preparer.rb, line 25
def set_queue_name
  if options[:queue].nil? && options[:payload_object].respond_to?(:queue_name)
    options[:queue] = options[:payload_object].queue_name
  else
    options[:queue] ||= Delayed::Worker.default_queue_name
  end
end