class Loom::Pattern::Reference::RunContext

A small class to bind the unbound_method to and provide context in the case of errors.

Public Class Methods

new(pattern, definition_ctx) click to toggle source
# File lib/loom/pattern/reference.rb, line 48
def initialize(pattern, definition_ctx)
  @pattern = pattern
  @definition_ctx = definition_ctx
end

Public Instance Methods

run(shell_api, fact_set) click to toggle source
# File lib/loom/pattern/reference.rb, line 53
def run(shell_api, fact_set)
  before_hooks = @definition_ctx.before_hooks
  after_hooks = @definition_ctx.after_hooks

  begin
    Loom.log.debug1(self) { "before hooks => #{before_hooks}"}
    before_hooks.each do |hook|
      Loom.log.debug2(self) { "executing before hook => #{hook}"}
      instance_exec shell_api, fact_set, &hook.block
    end

    # This is the entry point into calling patterns.
    apply_pattern shell_api, fact_set
  ensure
    Loom.log.debug1(self) { "after hooks => #{after_hooks}" }
    after_hooks.each do |hook|
      Loom.log.debug2(self) { "executing after hook => #{hook}"}
      instance_exec shell_api, fact_set, &hook.block
    end
  end
end

Private Instance Methods

apply_pattern(*args) click to toggle source
# File lib/loom/pattern/reference.rb, line 77
def apply_pattern(*args)
  instance_exec(*args, &@pattern.pattern_block)
end