Class: DelayedResque::PerformableMethod

Inherits:
Struct
  • Object
show all
Defined in:
lib/delayed_resque/performable_method.rb

Direct Known Subclasses

PerformableMailer

Constant Summary collapse

CLASS_STRING_FORMAT =
/^CLASS\:([A-Z][\w\:]+)$/
AR_STRING_FORMAT =
/^AR\:([A-Z][\w\:]+)\:(\d+)$/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, method, options, args) ⇒ PerformableMethod

Returns a new instance of PerformableMethod.

Raises:

  • (NoMethodError)


8
9
10
11
12
13
14
15
# File 'lib/delayed_resque/performable_method.rb', line 8

def initialize(object, method, options, args)
  raise NoMethodError, "undefined method `#{method}' for #{object.inspect}" unless object.respond_to?(method,true)

  @object = dump(object)
  @method = method.to_sym
  @options = options
  @args = args.map { |a| dump(a) }
end

Instance Attribute Details

#argsObject

Returns the value of attribute args

Returns:

  • (Object)

    the current value of args



4
5
6
# File 'lib/delayed_resque/performable_method.rb', line 4

def args
  @args
end

#methodObject

Returns the value of attribute method

Returns:

  • (Object)

    the current value of method



4
5
6
# File 'lib/delayed_resque/performable_method.rb', line 4

def method
  @method
end

#objectObject

Returns the value of attribute object

Returns:

  • (Object)

    the current value of object



4
5
6
# File 'lib/delayed_resque/performable_method.rb', line 4

def object
  @object
end

Class Method Details

.perform(options) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/delayed_resque/performable_method.rb', line 29

def self.perform(options)
  object = options["obj"]
  method = options["method"] 
  args = options["args"] 
  self.load(object).send(method, *args.map{|a| self.load(a)})
rescue ActiveRecord::RecordNotFound
  Rails.logger.warn("PerformableMethod: failed to find record for #{object.inspect}")
  # We cannot do anything about objects which were deleted in the meantime
  true
end

.queueObject



25
26
27
# File 'lib/delayed_resque/performable_method.rb', line 25

def self.queue
  "default"
end

Instance Method Details

#display_nameObject



17
18
19
20
21
22
23
# File 'lib/delayed_resque/performable_method.rb', line 17

def display_name
  case self.object
  when CLASS_STRING_FORMAT then "#{$1}.#{method}"
  when AR_STRING_FORMAT then "#{$1}##{method}"
  else "Unknown##{method}"
  end
end

#storeObject



40
41
42
# File 'lib/delayed_resque/performable_method.rb', line 40

def store
  {"obj" => @object, "method" => @method, "args" => @args}.merge(@options[:params] || {})
end