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