Class: Straw::Tracer

Inherits:
Object
  • Object
show all
Defined in:
lib/straw.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger) ⇒ Tracer

Returns a new instance of Tracer.



42
43
44
# File 'lib/straw.rb', line 42

def initialize(logger)
  @logger = logger
end

Instance Method Details

#trace(defaults = {}) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/straw.rb', line 46

def trace(defaults = {})
  tracer = TracePoint.new(:call) do |x|
    @logger.debug(defaults.merge({ path: x.path, lineno: x.lineno, clazz: x.defined_class, method: x.method_id, args: args_from(x), locals: locals_from(x) }))
  rescue StandardError => boom
    @logger.error(defaults.merge({ message: boom.message, stacktrace: boom.backtrace }))
  end
  tracer.enable
  yield
ensure
  tracer.disable
end