Class: Orchestrated::Orchestration

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/orchestrated/orchestration.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create(value, sym, args, prerequisite) ⇒ Object

Actually creates a completion (wrapper). Not exactly an orchestration—ssh…

Raises:

  • (ArgumentError)


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/orchestrated/orchestration.rb', line 87

def self.create( value, sym, args, prerequisite)
  # wee! static analysis FTW!
  raise ArgumentError.new('prerequisite can never be complete') if prerequisite.never_complete?
  prerequisite.save!
  OrchestrationCompletion.new.tap do |completion|
    completion.orchestration = new.tap do |orchestration|
      orchestration.handler = Handler.new( value, sym, args)
      orchestration.save!
      interest = OrchestrationInterest.new.tap do |interest|
        interest.prerequisite = prerequisite
        interest.orchestration = orchestration
        interest.save!
      end # interest
      # interest linkage can often change orchestration state so we have to reload here
      orchestration.reload
    end # orchestration
    completion.save!
  end # completion
end

Instance Method Details

#dequeueObject



111
112
113
# File 'lib/orchestrated/orchestration.rb', line 111

def dequeue
  self.delayed_job.destroy
end

#enqueueObject



107
108
109
# File 'lib/orchestrated/orchestration.rb', line 107

def enqueue
  self.delayed_job = Delayed::Job.enqueue( MessageDelivery.new( handler.value, handler.sym, handler.args, self.id) )
end