class ExMachina::Event::Execution
Constants
- STATUSES
Attributes
current[RW]
event[R]
previous[RW]
result[RW]
transition[R]
Public Class Methods
new(event, transition)
click to toggle source
# File lib/ex_machina/event/execution.rb, line 17 def initialize(event, transition) @event = event @transition = transition end
Public Instance Methods
eligible?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 87 def eligible? if transition.conditional? if transition.do_if invoke(transition.do_if) elsif transition.do_unless !invoke(transition.do_unless) end else true end end
error!(exception)
click to toggle source
# File lib/ex_machina/event/execution.rb, line 79 def error!(exception) @exception = exception finish!(@result = :error) end
error?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 83 def error? result == :error end
failure!()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 67 def failure! @current = previous finish!(@result = :failure) end
failure?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 64 def failure? result == :failure end
finish!(value)
click to toggle source
# File lib/ex_machina/event/execution.rb, line 34 def finish!(value) return result unless running? @running = false @ran = true if value == true success! elsif value == false failure! elsif value == :skipped skipped! elsif value == :error error!(@exception) else @result = value end end
run()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 99 def run start! return skipped! unless eligible? begin invoke(callback(:before), true) if (performed = invoke(:perform, true)) success! else failure! end invoke(:transit) invoke(callback(:after)) rescue StandardError => ex error!(ex) end if success? invoke(callback(:success)) elsif failure? invoke(callback(:failure)) elsif error? invoke(callback(:error)) elsif skipped? invoke(callback(:skip)) else # do what? end performed end
run?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 52 def run? !!@ran end
running?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 22 def running? @running end
skipped!()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 72 def skipped! finish!(@result = :skipped) end
skipped?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 75 def skipped? result == :skipped end
start!()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 26 def start! @run = false @running = true @result = nil @previous = event.status @current = event.status end
success!()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 59 def success! @current = transition.to finish!(@result = :success) end
success?()
click to toggle source
# File lib/ex_machina/event/execution.rb, line 56 def success? result == :success end
Protected Instance Methods
callback(name)
click to toggle source
return the transition ‘do_callback’ or default ‘(before|after)_transition method
# File lib/ex_machina/event/execution.rb, line 135 def callback(name) transition.send("do_#{name}") || "#{name}_#{previous}_to_#{current}" end
invoke(meth, default = nil)
click to toggle source
# File lib/ex_machina/event/execution.rb, line 139 def invoke(meth, default = nil) result = Util.invoke_method(event, meth, self) return default if result.nil? result end