Class: Serially::Job

Inherits:
Object
  • Object
show all
Extended by:
Resque::Plugins::LonelyJob
Defined in:
lib/serially/job.rb

Class Method Summary collapse

Class Method Details

.enqueue(item_class, item_id, enqueue_to = nil) ⇒ Object



28
29
30
# 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) ⇒ Object



20
21
22
23
24
25
26
# 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

.queueObject



11
12
13
# File 'lib/serially/job.rb', line 11

def self.queue
  Serially::GlobalOptions.default_queue
end

.redis_key(item_class, item_id, *args) ⇒ Object

this ensures that for item_class=Invoice, and item_id=34500, only one job will run at a time



16
17
18
# File 'lib/serially/job.rb', line 16

def self.redis_key(item_class, item_id, *args)
  "serially:#{item_class}_#{item_id}"
end