class Mushy::Runner
Attributes
runner[RW]
Public Class Methods
new(runner = nil)
click to toggle source
# File lib/mushy/runner.rb, line 7 def initialize runner = nil self.runner = runner || self end
Public Instance Methods
build_event(event_data, flow_id, run_id, flux_id)
click to toggle source
# File lib/mushy/runner.rb, line 46 def build_event event_data, flow_id, run_id, flux_id event = Mushy::Event.new event.id = SecureRandom.uuid event.run_id = run_id event.flow_id = flow_id event.flux_id = flux_id event.data = event_data event end
find_run(flux, flow)
click to toggle source
# File lib/mushy/runner.rb, line 39 def find_run flux, flow run = Mushy::Run.new run.id = SecureRandom.uuid run.flow_id = flow.id run end
run_event_in_flow(event, flow)
click to toggle source
# File lib/mushy/runner.rb, line 24 def run_event_in_flow event, flow flow.fluxs_for(event) .map { |s| runner.run_event_with_flux event, s, flow } .flatten end
run_event_with_flux(event, flux, flow)
click to toggle source
# File lib/mushy/runner.rb, line 30 def run_event_with_flux event, flux, flow data = event.data data = flow.adjust_data data [flux.execute(data)] .flatten .reject { |x| x.nil? } .map { |x| x.is_a?(Hash) ? build_event(x, event.flow_id, event.run_id, flux.id) : x } end
start(event_data, flux, flow)
click to toggle source
# File lib/mushy/runner.rb, line 11 def start event_data, flux, flow run = find_run flux, flow starting_event = build_event event_data, flow.id, run.id, flux.id events = run_event_with_flux starting_event, flux, flow while events.any? events = events.map { |e| runner.run_event_in_flow e, flow }.flatten end run end