Module: Anyway::Tracing

Included in:
Env, Loaders::Base
Defined in:
lib/anyway/tracing.rb

Overview

Provides method to trace values association

Defined Under Namespace

Classes: Trace

Class Method Summary collapse

Class Method Details

.captureObject



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/anyway/tracing.rb', line 123

def capture
  unless Settings.tracing_enabled
    yield
    return
  end

  trace = Trace.new
  trace_stack.push trace
  yield
  trace_stack.last
ensure
  trace_stack.pop
end

.current_traceObject Also known as: tracing?



141
# File 'lib/anyway/tracing.rb', line 141

def current_trace() = trace_stack.last

.current_trace_sourceObject



149
150
151
# File 'lib/anyway/tracing.rb', line 149

def current_trace_source
  source_stack.last || accessor_source(caller_locations(2, 1).first)
end

.source_stackObject



145
146
147
# File 'lib/anyway/tracing.rb', line 145

def source_stack
  (Thread.current[:__anyway__trace_source_stack__] ||= [])
end

.trace!(type, *path, **opts) ⇒ Object



169
170
171
172
173
174
175
176
177
178
179
# File 'lib/anyway/tracing.rb', line 169

def trace!(type, *path, **opts)
  return yield unless Tracing.tracing?
  source = {type: type}.merge(opts)
  val = yield
  if val.is_a?(Hash)
    Tracing.current_trace.merge_values(val, **source)
  else
    Tracing.current_trace.record_value(val, *path, **source)
  end
  val
end

.trace_stackObject



137
138
139
# File 'lib/anyway/tracing.rb', line 137

def trace_stack
  (Thread.current[:__anyway__trace_stack__] ||= [])
end

.with_trace_source(src) ⇒ Object



153
154
155
156
157
158
# File 'lib/anyway/tracing.rb', line 153

def with_trace_source(src)
  source_stack << src
  yield
ensure
  source_stack.pop
end