class Nocode::StepsExecutor
Class that knows how to execute a series of steps given a context.
Constants
- NAME_KEY
- OPTIONS_KEY
- TYPE_KEY
Attributes
context[R]
steps[R]
Public Class Methods
new(context:, steps:)
click to toggle source
# File lib/nocode/steps_executor.rb, line 18 def initialize(context:, steps:) @context = context @steps = steps freeze end
Public Instance Methods
execute()
click to toggle source
# File lib/nocode/steps_executor.rb, line 25 def execute steps.each do |step| step_instance = make_step(step) execute_step(step_instance) end end
Private Instance Methods
execute_step(step)
click to toggle source
# File lib/nocode/steps_executor.rb, line 56 def execute_step(step) log(step.name) unless step.name.empty? log("Step: #{step.type}") log("Class: #{step.class}") time_in_seconds = Benchmark.measure { step.perform }.real log("Completed in #{time_in_seconds.round(3)} second(s)") log_line end
make_step(step)
click to toggle source
# File lib/nocode/steps_executor.rb, line 35 def make_step(step) evaluated_step = Nay.evaluate(step, context.to_h) type = evaluated_step[TYPE_KEY].to_s name = evaluated_step[NAME_KEY].to_s step_class = StepRegistry.constant!(type) options = if step_class.skip_options_evaluation? step[OPTIONS_KEY] else evaluated_step[OPTIONS_KEY] end step_class.new( options: Util::Dictionary.new(options), context: context, name: name, type: type ) end