class Tracer
Attributes
data[R]
path[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/tracer.rb, line 4 def initialize(options = {}) @options = options @trace = build_tracer @path = [] @data = [] end
Public Instance Methods
disable()
click to toggle source
# File lib/tracer.rb, line 15 def disable @trace.disable end
enable()
click to toggle source
# File lib/tracer.rb, line 11 def enable @trace.enable end
Private Instance Methods
build_tracer()
click to toggle source
# File lib/tracer.rb, line 25 def build_tracer TracePoint.new(:call, :return) do |event| next if event.defined_class == self.class case event.event when :return @options[:display_return_value] && event.return_value && @data.push( key: uniq_key, parent: @path.last, text: "Return: #{event.return_value}" ) @path.pop when :call key = uniq_key data = { key: key, parent: @path.last, text: event.method_id }.compact @data.push(data) @path.push(key) end end end
uniq_key()
click to toggle source
# File lib/tracer.rb, line 21 def uniq_key rand(1..1_000).to_s + Time.now.to_f.to_s end