Methods

Delayed::Backend::Base::ClassMethods

Public Instance Methods

enqueue(*args) click to toggle source

Add a job to the queue

# File lib/delayed_job_unique_key/base.rb, line 10
def enqueue(*args)
  options = {
      :priority => Delayed::Worker.default_priority
  }.merge!(args.extract_options!)

  options[:payload_object] ||= args.shift

  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[:unique_key] = options[:unique_key]
    options[:run_at] = args[1]
  end

  unless options[:payload_object].respond_to?(:perform)
    raise ArgumentError, 'Cannot enqueue items which do not respond to perform'
  end

  if Delayed::Worker.delay_jobs
    self.new(options).tap do |job|
      Delayed::Worker.lifecycle.run_callbacks(:enqueue, job) do
        job.hook(:enqueue)
        job.save
      end
    end
  else
    Delayed::Job.new(:payload_object => options[:payload_object]).tap do |job|
      job.invoke_job
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.