Class: Resque::Plugins::MultiStepTask::FinalizationJob
- Inherits:
-
Object
- Object
- Resque::Plugins::MultiStepTask::FinalizationJob
- Extended by:
- Constantization
- Defined in:
- lib/resque/plugins/multi_step_task/finalization_job.rb
Overview
Executes a single finalization job
Class Method Summary collapse
- .logger ⇒ Object
-
.perform(task_id, job_module_name, *args) ⇒ Object
Handle job invocation.
Methods included from Constantization
Class Method Details
.logger ⇒ Object
38 39 40 |
# File 'lib/resque/plugins/multi_step_task/finalization_job.rb', line 38 def self.logger Resque::Plugins::MultiStepTask.logger end |
.perform(task_id, job_module_name, *args) ⇒ Object
Handle job invocation
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/resque/plugins/multi_step_task/finalization_job.rb', line 11 def self.perform(task_id, job_module_name, *args) task = MultiStepTask.find(task_id) begin klass = constantize(job_module_name) klass.singleton_class.class_eval "def multi_step_task; @@task ||= MultiStepTask.find('#{task_id}'); end" klass.singleton_class.class_eval "def multi_step_task_id; @@task_id ||= '#{task_id}'; end" klass.perform(*args) rescue Exception logger.info("[Resque Multi-Step-Task] Incrementing failed_count: Finalization job #{job_module_name} failed for task id #{task_id} at #{Time.now} (args: #{args})") task.increment_failed_count raise end logger.info("[Resque Multi-Step-Task] Incrementing completed_count: Finalization job #{job_module_name} completed for task id #{task_id} at #{Time.now} (args: #{args})") task.increment_completed_count if fin_job_info = task.redis.lpop('finalize_jobs') # Queue the next finalization job Resque::Job.create(task.queue_name, FinalizationJob, task.task_id, *Yajl::Parser.parse(fin_job_info)) else # There is nothing left to do so cleanup. task.nuke end end |