class Fuey::Trace

Attributes

name[RW]

Public Class Methods

new(args) click to toggle source
Calls superclass method Fuey::ModelInitializer::new
# File lib/fuey_client/fuey/trace.rb, line 13
def initialize(args)
  super(args)
end

Public Instance Methods

add_step(inspection) click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 21
def add_step(inspection)
  inspection.add_observer(self)
  inspection.add_observer(error_logger)
  steps.push inspection
  inspection
end
receiver=(observer) click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 17
def receiver=(observer)
  add_observer observer
end
run() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 56
def run
  changed
  notify_observers :new, name, steps.map(&:status)

  ActiveSupport::Notifications.instrument("run.trace", {:trace => self.to_s}) do
    run, failed, @_current = 0, 0, nil
    steps.each do |step|
      run += 1
      @_current = step
      step.execute
      if step.failed?
        failed += 1
        break
      end
    end

    changed
    notify_observers :complete, self
    if failed == 0
      %(#{name} passed. #{steps.size} steps, #{run} executed, #{failed} failed.)
    else
      %(#{name} failed on #{@_current.name}. #{steps.size} steps, #{run} executed, #{failed} failed.)
    end
  end
end
status() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 48
def status
  @_current ? @_current.state : "pending"
end
status_message() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 52
def status_message
  @_current.failed? ? @_current.status_message : ""
end
steps() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 28
def steps
  @_steps ||= Array.new
end
to_s() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 37
def to_s
  %(#{name}: [#{steps.join(', ')}])
end
update(status) click to toggle source

Handle updates from inpsections via observation

# File lib/fuey_client/fuey/trace.rb, line 42
def update(status)
  changed
  notify_observers :update, name, [status]
  true
end

Private Instance Methods

error_logger() click to toggle source
# File lib/fuey_client/fuey/trace.rb, line 32
def error_logger
  @_error_logger ||= Fuey::Reporters::ErrorLogger.new
end