module Resque::Plugins::State::ClassMethods

Methods required for launching a state-ready job

Public Instance Methods

create(options = {}) click to toggle source

Create is the primary method for adding jobs to the queue. This would be called on the job class to create a job of that type. Any options passed are passed to the Job instance as a hash of options. It returns the UUID of the job.

Example:

class ExampleJob
  include Resque::Plugins::State

  def perform
    job_status "Hey I'm a job num #{options['num']}"
  end

end

job_id = ExampleJob.create(:num => 100)
# File lib/resque/plugins/state.rb, line 103
def create(options = {})
  enqueue(self, options)
end
dequeue(klass, uuid) click to toggle source

Removes a job of type <tt>klass<tt> from the queue.

The initially given options are retrieved from the status hash. (Resque needs the options to find the correct queue entry)

# File lib/resque/plugins/state.rb, line 136
def dequeue(klass, uuid)
  status = Resque::Plugins::State::Hash.get(uuid)
  Resque.dequeue(klass, uuid, status.options)
end
enqueue(klass, options = {}) click to toggle source

Adds a job of type <tt>klass<tt> to the queue with <tt>options<tt>.

Returns the UUID of the job if the job was queued, or nil if the job was rejected by a before_enqueue hook.

# File lib/resque/plugins/state.rb, line 111
def enqueue(klass, options = {})
  enqueue_to(Resque.queue_from_class(klass) || queue, klass, options)
end
enqueue_to(queue, klass, options = {}) click to toggle source

Adds a job of type <tt>klass<tt> to a specified queue with <tt>options<tt>.

Returns the UUID of the job if the job was queued, or nil if the job was rejected by a before_enqueue hook.

# File lib/resque/plugins/state.rb, line 120
def enqueue_to(queue, klass, options = {})
  uuid = Resque::Plugins::State::Hash.generate_uuid
  Resque::Plugins::State::Hash.create uuid, options: options

  if Resque.enqueue_to(queue, klass, uuid, options)
    uuid
  else
    Resque::Plugins::State::Hash.remove(uuid)
    nil
  end
end
name() click to toggle source

used when displaying the Job in the resque-web UI and identifiyng the job type by status. By default this is the name of the job class, but can be overidden in the specific job class to present a more user friendly job name

# File lib/resque/plugins/state.rb, line 81
def name
  to_s
end
perform(uuid = nil, options = {}) click to toggle source

This is the method called by Resque::Worker when processing jobs. It creates a new instance of the job class and populates it with the uuid and options.

You should not override this method, rahter the perform instance method.

# File lib/resque/plugins/state.rb, line 147
def perform(uuid = nil, options = {})
  uuid ||= Resque::Plugins::State::Hash.generate_uuid
  instance = new(uuid, options)
  instance.safe_perform!
  instance
end
queue() click to toggle source

The default queue is :statused, this can be ovveridden in the specific job class to put the jobs on a specific worker queue

# File lib/resque/plugins/state.rb, line 73
def queue
  :statused
end
scheduled(queue, _klass, *args) click to toggle source

Wrapper API to forward a Resque::Job creation API call into a Resque::Plugins::State call. This is needed to be used with resque scheduler github.com/bvandenbos/resque-scheduler

# File lib/resque/plugins/state.rb, line 158
def scheduled(queue, _klass, *args)
  enqueue_to(queue, self, *args)
end