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