class Serially::Job
Public Class Methods
enqueue(item_class, item_id, enqueue_to = nil)
click to toggle source
# File lib/serially/job.rb, line 28 def self.enqueue(item_class, item_id, enqueue_to = nil) Resque.enqueue_to(enqueue_to || self.queue, Serially::Job, item_class.to_s, item_id) end
perform(item_class, item_id)
click to toggle source
# File lib/serially/job.rb, line 20 def self.perform(item_class, item_id) Resque.logger.info("Serially: starting running tasks for #{item_class}/#{item_id}...") item_class = item_class.constantize if item_class.is_a?(String) writer = TaskRunWriter.new if item_class.is_active_record? result_str = TaskRunner.new(writer).run!(item_class, item_id) Resque.logger.info(result_str) end
queue()
click to toggle source
# File lib/serially/job.rb, line 11 def self.queue Serially::GlobalOptions.default_queue end
redis_key(item_class, item_id, *args)
click to toggle source
this ensures that for item_class=Invoice, and item_id=34500, only one job will run at a time
# File lib/serially/job.rb, line 16 def self.redis_key(item_class, item_id, *args) "serially:#{item_class}_#{item_id}" end