class SmashTheState::Operation::DryRun::Builder
Attributes
dry_sequence[R]
wet_sequence[R]
Public Class Methods
new(wet_sequence)
click to toggle source
# File lib/smash_the_state/operation/dry_run.rb, line 7 def initialize(wet_sequence) @wet_sequence = wet_sequence @dry_sequence = Operation::Sequence.new # in the case of a dynamic schema, front-load it as the first step dynamic_schema_step = @wet_sequence.dynamic_schema_step return if dynamic_schema_step.nil? step(dynamic_schema_step.name, &dynamic_schema_step.implementation) end
Public Instance Methods
step(step_name, &block)
click to toggle source
# File lib/smash_the_state/operation/dry_run.rb, line 19 def step(step_name, &block) referenced_steps = wet_sequence.steps_for_name(step_name) if block add_dry_run_step(step_name, &block) return end if referenced_steps.empty? raise "dry run sequence referred to unknown step " \ "#{step_name.inspect}. make sure to define " \ "your dry run sequence last, after all your steps are defined" end referenced_steps.each do |referenced_step| # we're gonna copy the implementation verbatim but add a new step marked as # side-effect-free, because if the step was added to the dry run sequence it # must be assumed to be side-effect-free add_dry_run_step(step_name, &referenced_step.implementation) end end
Private Instance Methods
add_dry_run_step(step_name, &block)
click to toggle source
# File lib/smash_the_state/operation/dry_run.rb, line 43 def add_dry_run_step(step_name, &block) if step_name == :validate dry_sequence.add_validation_step(&block) else dry_sequence.add_step(step_name, side_effect_free: true, &block) end end