Module: QueueDispatcher::ActsAsTask::ClassMethods

Defined in:
lib/queue_dispatcher/acts_as_task.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_task(args = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/queue_dispatcher/acts_as_task.rb', line 18

def acts_as_task(args = {})
  # Include number-helper for number_to_human_size method
  include ActionView::Helpers::NumberHelper

  include QueueDispatcher::ActsAsTask::InstanceMethods
  extend QueueDispatcher::ActsAsTask::SingletonMethods

  @acts_as_task_config = QueueDispatcher::ActsAsTask::Config.new(args[:task_queue_model] || :task_queue)

  belongs_to            acts_as_task_config.task_queue_class_name
  has_many              :task_dependencies, :dependent => :destroy, :foreign_key => :task_id
  has_many              :dependent_tasks, :through => :task_dependencies
  has_many              :inverse_task_dependencies, :class_name => 'TaskDependency', :foreign_key => 'dependent_task_id', :dependent => :destroy
  has_many              :inverse_dependent_tasks, :through => :inverse_task_dependencies, :source => :task
  validates_presence_of :target, :method_name, :state
  serialize             :target
  serialize             :args
  serialize             :result

  # Add dynamic associations to task_dependency and task_property according to the class name
  TaskDependency.instance_eval %Q{
    belongs_to :task, :class_name => '#{self.name}'
    belongs_to :dependent_task, :class_name => '#{self.name}'
  }
end