Class: Patella::SendLaterWorker

Inherits:
Object
  • Object
show all
Extended by:
Resque::Plugins::Meta
Defined in:
lib/patella/send_later_worker.rb

Constant Summary collapse

@@default_queue =
:send_later
@@queues =
{}

Class Method Summary collapse

Class Method Details

.perform(class_name, instance_id, method_name, *args) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/patella/send_later_worker.rb', line 18

def self.perform(class_name, instance_id, method_name, *args)
  o = class_name.constantize
  o = o.find_by_id instance_id if instance_id

  o.send(method_name, *args)
rescue => e
  raise e, "#{e.message} \nWith SendLater: #{class_name}#{':'+instance_id.to_s if instance_id}##{method_name}(#{args.map(&:to_s).join(',')})", e.backtrace
end

.perform_later(*args) ⇒ Object



8
9
10
11
12
# File 'lib/patella/send_later_worker.rb', line 8

def self.perform_later(*args)
  # args[0] is class name of invoking class, args[2] is method
  queue = self.queue_for(args[0], args[2])
  Resque::Job.create(queue, 'Patella::SendLaterWorker', *args)
end

.queue_for(class_name, method_name) ⇒ Object



14
15
16
# File 'lib/patella/send_later_worker.rb', line 14

def self.queue_for(class_name, method_name)
  @@queues[class_name.to_s].try(:[],method_name.to_s) || @@default_queue
end