module Blab::Tracer

Constants

C_CALLS
FILE_NAME

Public Instance Methods

reset() click to toggle source
# File lib/blab/tracer.rb, line 10
def reset
  printer.reset_files
  @defined_vars = {}
end
trace() click to toggle source
# File lib/blab/tracer.rb, line 15
def trace
  proc do |event, file, line, method_name, context, class_name|
    next if file =~ FILE_NAME
    next if skip_c_calls? && C_CALLS.include?(event)
    next if original_scope_only? && !original_scope?(file, method_name, class_name)

    context.local_variables.each do |v|
      next unless context.local_variable_defined?(v)

      val = context.local_variable_get(v)
      old_v = defined_vars[v]

      next if val == old_v

      formatted_output(v, val)
      defined_vars[v] = val
    end

    printer.print(
      time: Time.now.strftime(datetime_format),
      event: event,
      file: file,
      line: line,
      method_name: method_name.to_s,
      class_name: class_name.to_s
    )
  end
end

Private Instance Methods

datetime_format() click to toggle source
# File lib/blab/tracer.rb, line 54
def datetime_format
  Blab::Config.datetime_format
end
defined_vars() click to toggle source
# File lib/blab/tracer.rb, line 66
def defined_vars
  @defined_vars ||= {}
end
formatted_output(key, val) click to toggle source
# File lib/blab/tracer.rb, line 58
def formatted_output(key, val)
  logger.info("Var......... #{key}=#{formatter.format(val)}")
end
formatter() click to toggle source
# File lib/blab/tracer.rb, line 62
def formatter
  @formatter ||= Blab::Formatter.new
end
logger() click to toggle source
# File lib/blab/tracer.rb, line 50
def logger
  Blab::Config.logger
end
original_scope?(file, method_name, class_name) click to toggle source
# File lib/blab/tracer.rb, line 78
def original_scope?(file, method_name, class_name)
  @original_file ||= file
  @original_method_name ||= method_name
  @orinal_class_name ||= class_name

  @original_file == file &&
    @original_method_name == method_name &&
    @orinal_class_name == class_name
end
original_scope_only?() click to toggle source
# File lib/blab/tracer.rb, line 70
def original_scope_only?
  Blab::Config.original_scope_only?
end
printer() click to toggle source
# File lib/blab/tracer.rb, line 46
def printer
  @printer ||= Printer.new(Blab::Config.output_config, logger)
end
skip_c_calls?() click to toggle source
# File lib/blab/tracer.rb, line 74
def skip_c_calls?
  !Blab::Config.trace_c_calls?
end