class Trifle::Logger::Tracer::Hash

Attributes

artifacts[RW]
data[RW]
ignore[RW]
key[RW]
meta[RW]
reference[RW]
state[RW]
tags[RW]

Public Class Methods

new(key:, meta: nil) click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 9
def initialize(key:, meta: nil)
  @key = key
  @meta = meta
  @data = []
  @tags = []
  @artifacts = []
  @state = :running
  @ignore = false
  @result_prefix = '=> '

  trace("Trifle::Trace has been initialized for #{key}")
  @reference = liftoff.first
end

Public Instance Methods

artifact(name, path) click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 66
def artifact(name, path)
  @data << {
    at: now, message: name,
    state: :success, head: false, meta: false, media: true
  }
  @artifacts << path
  bump
  path
end
bump() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 105
def bump
  return unless @bumped_at && @bumped_at <= now - Trifle::Logger.default.bump_every

  @bumped_at = now
  Trifle::Logger.default.on_bump(self)
end
dump_message(message, head:, state:) click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 42
def dump_message(message, head:, state:)
  @data << {
    at: now, message: message,
    state: state, head: head, meta: false, media: false
  }
end
dump_result(result) click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 49
def dump_result(result)
  @data << {
    at: now, message: "#{@result_prefix}#{result.inspect}",
    state: :success, head: false, meta: true, media: false
  }
end
fail!() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 76
def fail!
  @state = :error
end
ignore!() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 96
def ignore!
  @ignore = true
end
keys() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 23
def keys
  parts = key.split('/')
  parts.count.times.map { |i| parts[0..i].join('/') }
end
liftoff() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 100
def liftoff
  @bumped_at = now
  Trifle::Logger.default.on_liftoff(self)
end
now() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 56
def now
  Time.now.to_i
end
running?() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 92
def running?
  @state == :running
end
success!() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 84
def success!
  @state = :success
end
success?() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 88
def success?
  @state == :success
end
tag(tag) click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 60
def tag(tag)
  @tags << tag
  bump
  tag
end
trace(message, state: :success, head: false) { || ... } click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 28
def trace(message, state: :success, head: false) # rubocop:disable Metrics/MethodLength
  result = yield if block_given?
rescue => e # rubocop:disable Style/RescueStandardError
  raise e
ensure
  dump_message(
    message,
    head: head, state: block_given? && result.nil? || e ? :error : state
  )
  dump_result(result) if block_given?
  bump
  result
end
warn!() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 80
def warn!
  @state = :warning
end
wrapup() click to toggle source
# File lib/trifle/logger/tracer/hash.rb, line 112
def wrapup
  success! if running?
  Trifle::Logger.default.on_wrapup(self)
end