Class: StackTrace::Trace

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTrace

Returns a new instance of Trace.



31
32
33
# File 'lib/stack_trace/trace.rb', line 31

def initialize
  @spans = []
end

Instance Attribute Details

#spansObject (readonly)

Returns the value of attribute spans.



29
30
31
# File 'lib/stack_trace/trace.rb', line 29

def spans
  @spans
end

Class Method Details

.as_jsonObject



24
25
26
# File 'lib/stack_trace/trace.rb', line 24

def as_json
  current.as_json
end

.currentObject



20
21
22
# File 'lib/stack_trace/trace.rb', line 20

def current
  @current ||= new
end

.startObject



16
17
18
# File 'lib/stack_trace/trace.rb', line 16

def start
  @current = new
end

.track(method_name, *args) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/stack_trace/trace.rb', line 6

def track(method_name, *args)
  span = current.add(method_name, *args)
  span.value = yield
rescue StandardError => e
  span.exception = e
  raise e
ensure
  span.close
end

Instance Method Details

#add(method_name, *args) ⇒ Object



35
36
37
# File 'lib/stack_trace/trace.rb', line 35

def add(method_name, *args)
  add_to_active_span(method_name, *args) || create_new_span(method_name, *args)
end

#as_jsonObject



39
40
41
# File 'lib/stack_trace/trace.rb', line 39

def as_json
  { spans: spans.map(&:as_json) }
end