class Orchestra::Step::InlineStep

Attributes

context_class[RW]

Public Class Methods

build(&block) click to toggle source
# File lib/orchestra/step.rb, line 54
def self.build &block
  builder = DSL::Steps::Builder.new
  DSL::Steps::Context.evaluate builder, &block
  builder.build_step
end
new(args = {}) click to toggle source
Calls superclass method Orchestra::Step::new
# File lib/orchestra/step.rb, line 62
def initialize args = {}
  @defaults = args.delete :defaults do {} end
  @execute_block = args.fetch :execute_block
  args.delete :execute_block
  super args
  @context_class = build_execution_context_class
  validate!
end

Public Instance Methods

apply_defaults(input) click to toggle source
# File lib/orchestra/step.rb, line 91
def apply_defaults input
  defaults.each do |key, thunk|
    next if input.has_key? key
    input[key] = thunk.call
  end
  input
end
build_context(input) click to toggle source
# File lib/orchestra/step.rb, line 86
def build_context input
  state = apply_defaults input
  execution_context = context_class.new state, execute_block
end
build_execution_context_class() click to toggle source
# File lib/orchestra/step.rb, line 77
def build_execution_context_class
  context = Class.new InlineContext
  context.class_exec dependencies, collection do |deps, collection|
    deps.each do |dep| define_dependency dep end
    alias_method :fetch_collection, collection if collection
  end
  context
end
optional_dependencies() click to toggle source
# File lib/orchestra/step.rb, line 99
def optional_dependencies
  defaults.keys
end
validate!() click to toggle source
# File lib/orchestra/step.rb, line 71
def validate!
  unless execute_block
    raise ArgumentError, "expected inline step to define a execute block"
  end
end