lib/delayed/performable_method.rb in delayed_job-2.0.8 vs lib/delayed/performable_method.rb in delayed_job-2.1.0.pre
- old
+ new
@@ -1,62 +1,19 @@
-class Class
- def load_for_delayed_job(arg)
- self
- end
-
- def dump_for_delayed_job
- name
- end
-end
-
module Delayed
class PerformableMethod < Struct.new(:object, :method, :args)
- STRING_FORMAT = /^LOAD\;([A-Z][\w\:]+)(?:\;(\w+))?$/
-
- class LoadError < StandardError
- end
-
def initialize(object, method, args)
- raise NoMethodError, "undefined method `#{method}' for #{object.inspect}" unless object.respond_to?(method, true)
+ raise NoMethodError, "undefined method `#{method}' for #{object.inspect}" unless object.respond_to?(method)
- self.object = dump(object)
- self.args = args.map { |a| dump(a) }
+ self.object = object
+ self.args = args
self.method = method.to_sym
end
def display_name
- if STRING_FORMAT === object
- "#{$1}#{$2 ? '#' : '.'}#{method}"
- else
- "#{object.class}##{method}"
- end
+ "#{object.class}##{method}"
end
def perform
- load(object).send(method, *args.map{|a| load(a)})
- rescue PerformableMethod::LoadError
- # We cannot do anything about objects that can't be loaded
- true
- end
-
- private
-
- def load(obj)
- if STRING_FORMAT === obj
- $1.constantize.load_for_delayed_job($2)
- else
- obj
- end
- rescue => e
- Delayed::Worker.logger.warn "Could not load object for job: #{e.message}"
- raise PerformableMethod::LoadError
- end
-
- def dump(obj)
- if obj.respond_to?(:dump_for_delayed_job)
- "LOAD;#{obj.dump_for_delayed_job}"
- else
- obj
- end
+ object.send(method, *args) if object
end
end
end