module ExMachina::Event::InstanceMethods

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/ex_machina/event.rb, line 39
def initialize(context)
  @context = context
end

Public Instance Methods

can_fire?() click to toggle source
# File lib/ex_machina/event.rb, line 88
def can_fire?
  validate
  valid?
end
fire() click to toggle source
# File lib/ex_machina/event.rb, line 66
def fire
  validate
  return false unless can_fire?

  result = false
  within_transaction do
    transitions.each do |transition|
      runner = Execution.new(self, transition)
      runner.run

      result = runner.current
      break if runner.success?
    end
  end
  result
end
fire!() click to toggle source
# File lib/ex_machina/event.rb, line 83
def fire!
  raise error_messages unless can_fire?
  fire
end
perform() click to toggle source

Override this method on event implementation

# File lib/ex_machina/event.rb, line 62
def perform
  true
end
status() click to toggle source

The context current status

# File lib/ex_machina/event.rb, line 51
def status
  context.status
end
transit(execution) click to toggle source

Called on event success

# File lib/ex_machina/event.rb, line 56
def transit(execution)
  context.status = execution.current.to_s
  persist(context)
end
transitions() click to toggle source

Available transitions

# File lib/ex_machina/event.rb, line 44
def transitions
  self.class
    .transitions
    .select { |transition| transition.from?(status) }
end