module StateManager::DelayedJob::State

Public Instance Methods

delayed_events() click to toggle source
# File lib/state_manager/plugins/delayed_job.rb, line 20
def delayed_events
  self.class.specification.events.reject{|name,event|!event[:delay]}
end
entered() click to toggle source
# 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
exited() click to toggle source
# 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