class ResqueDelay::Job
Public Class Methods
enqueue(klass, method, *args)
click to toggle source
# File lib/resque_delay/job.rb, line 13 def self.enqueue(klass, method, *args) params = args.map {|arg| serialize_argument(arg) } object = serialize_object(klass) Resque.enqueue(self, object, method.to_s, params) end
perform(klass, method, args)
click to toggle source
# File lib/resque_delay/job.rb, line 4 def self.perform(klass, method, args) object = deserialize_object(klass) args = args.map {|arg| deserialize_argument(arg) } result = object.send method, *args result.deliver if result.respond_to?(:deliver) end
Private Class Methods
deserialize_argument(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 25 def self.deserialize_argument(arg) serialized_instance?(arg) ? arg['object_class'].constantize.find(arg['object_id']) : arg end
deserialize_object(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 21 def self.deserialize_object(arg) serialized_instance?(arg) ? arg['object_class'].constantize.find(arg['object_id']) : arg.constantize end
instance?(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 37 def self.instance?(arg) arg.respond_to?(:id) && arg.class.respond_to?(:find) end
serialize_argument(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 33 def self.serialize_argument(arg) instance?(arg) ? { object_class: arg.class.to_s, object_id: arg.id } : arg end
serialize_object(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 29 def self.serialize_object(arg) instance?(arg) ? { object_class: arg.class.to_s, object_id: arg.id } : arg.to_s end
serialized_instance?(arg)
click to toggle source
# File lib/resque_delay/job.rb, line 41 def self.serialized_instance?(arg) arg.is_a?(Hash) && arg['object_class'].present? end