Class: Object

Inherits:
BasicObject
Defined in:
lib/tracing.rb

Overview

Make the trace method globally available:

Instance Method Summary collapse

Instance Method Details

#trace(*args, &block) ⇒ Object



286
287
288
289
290
291
292
293
294
295
296
# File 'lib/tracing.rb', line 286

def trace *args, &block
  begin
    # This monstrosity reduces the steps when single-stepping:
    tracer = (Tracing.tracer ||= Tracing::Tracer.new) and
      (old_indent, old_nested, old_delayed, enabled = tracer.indent, tracer.nested, tracer.delayed, tracer.show(*args))

    block ? yield : (args.size == 0 ? tracer : enabled)
  ensure
    tracer.indent, tracer.nested, tracer.delayed = old_indent, old_nested, old_delayed
  end
end