Module: StateManager::DelayedJob::State

Included in:
State
Defined in:
lib/state_manager/plugins/delayed_job.rb

Instance Method Summary collapse

Instance Method Details

#delayed_eventsObject



20
21
22
# File 'lib/state_manager/plugins/delayed_job.rb', line 20

def delayed_events
  self.class.specification.events.reject{|name,event|!event[:delay]}
end

#enteredObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/state_manager/plugins/delayed_job.rb', line 24

def entered
  delayed_events.each do |name, event|
    delay = if event[:delay].is_a? Proc
      instance_exec(&event[:delay])
    elsif event[:delay].is_a? Symbol
      send event[:delay]
    else
      event[:delay]
    end
    delayed_event = DelayedEvent.new(path, event, state_manager)
    Delayed::Job.enqueue delayed_event, :run_at => delay.from_now
  end
end

#exitedObject



38
39
40
41
42
43
# File 'lib/state_manager/plugins/delayed_job.rb', line 38

def exited
  # TODO: we currently just have logic inside the job itself which
  # skips the event if it is no longer relevant. This is not perfect.
  # Ideally we should cancel events in this method (requiring an
  # efficient way to do this without looping over all events).
end