Module: Resque::Plugins::State::ClassMethods
- Defined in:
- lib/resque/plugins/state.rb
Overview
Methods required for launching a state-ready job
Instance Method Summary collapse
-
#create(options = {}) ⇒ Object
Create is the primary method for adding jobs to the queue.
-
#dequeue(klass, uuid) ⇒ Object
Removes a job of type <tt>klass<tt> from the queue.
-
#enqueue(klass, options = {}) ⇒ Object
Adds a job of type <tt>klass<tt> to the queue with <tt>options<tt>.
-
#enqueue_to(queue, klass, options = {}) ⇒ Object
Adds a job of type <tt>klass<tt> to a specified queue with <tt>options<tt>.
-
#name ⇒ Object
used when displaying the Job in the resque-web UI and identifiyng the job type by status.
-
#perform(uuid = nil, options = {}) ⇒ Object
This is the method called by Resque::Worker when processing jobs.
-
#queue ⇒ Object
The default queue is :statused, this can be ovveridden in the specific job class to put the jobs on a specific worker queue.
-
#scheduled(queue, _klass, *args) ⇒ Object
Wrapper API to forward a Resque::Job creation API call into a Resque::Plugins::State call.
Instance Method Details
#create(options = {}) ⇒ Object
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 #{['num']}"
end
end
job_id = ExampleJob.create(:num => 100)
103 104 105 |
# File 'lib/resque/plugins/state.rb', line 103 def create( = {}) enqueue(self, ) end |
#dequeue(klass, uuid) ⇒ Object
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)
136 137 138 139 |
# File 'lib/resque/plugins/state.rb', line 136 def dequeue(klass, uuid) status = Resque::Plugins::State::Hash.get(uuid) Resque.dequeue(klass, uuid, status.) end |
#enqueue(klass, options = {}) ⇒ Object
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.
111 112 113 |
# File 'lib/resque/plugins/state.rb', line 111 def enqueue(klass, = {}) enqueue_to(Resque.queue_from_class(klass) || queue, klass, ) end |
#enqueue_to(queue, klass, options = {}) ⇒ Object
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.
120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/resque/plugins/state.rb', line 120 def enqueue_to(queue, klass, = {}) uuid = Resque::Plugins::State::Hash.generate_uuid Resque::Plugins::State::Hash.create uuid, options: if Resque.enqueue_to(queue, klass, uuid, ) uuid else Resque::Plugins::State::Hash.remove(uuid) nil end end |
#name ⇒ Object
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
81 82 83 |
# File 'lib/resque/plugins/state.rb', line 81 def name to_s end |
#perform(uuid = nil, options = {}) ⇒ Object
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.
147 148 149 150 151 152 |
# File 'lib/resque/plugins/state.rb', line 147 def perform(uuid = nil, = {}) uuid ||= Resque::Plugins::State::Hash.generate_uuid instance = new(uuid, ) instance.safe_perform! instance end |
#queue ⇒ Object
The default queue is :statused, this can be ovveridden in the specific job class to put the jobs on a specific worker queue
73 74 75 |
# File 'lib/resque/plugins/state.rb', line 73 def queue :statused end |
#scheduled(queue, _klass, *args) ⇒ Object
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
158 159 160 |
# File 'lib/resque/plugins/state.rb', line 158 def scheduled(queue, _klass, *args) enqueue_to(queue, self, *args) end |