module TraceView::API::LayerInit

Provides methods related to layer initialization and reporting

Public Instance Methods

force_trace() { || ... } click to toggle source

force_trace has been deprecated and will be removed in a subsequent version.

# File lib/traceview/api/layerinit.rb, line 37
def force_trace
  TraceView.logger.warn 'TraceView::API::LayerInit.force_trace has been deprecated and will be ' \
                   'removed in a subsequent version.'

  saved_mode = TraceView::Config[:tracing_mode]
  TraceView::Config[:tracing_mode] = :always
  yield
ensure
  TraceView::Config[:tracing_mode] = saved_mode
end
report_init(layer = :rack) click to toggle source

Internal: Report that instrumentation for the given layer has been installed, as well as the version of instrumentation and version of layer.

# File lib/traceview/api/layerinit.rb, line 13
def report_init(layer = :rack)
  # Don't send __Init in test or if we're
  # isn't fully loaded (e.g. missing c-extension)
  return if ENV.key?('TRACEVIEW_GEM_TEST') || !TraceView.loaded

  platform_info = TraceView::Util.build_init_report

  # If already tracing, save and clear the context.  Restore it after
  # the __Init is sent
  context = nil

  if TraceView.tracing?
    context = TraceView::Context.toString
    TraceView::Context.clear
  end

  start_trace(layer, nil, platform_info.merge('Force' => true)) {}

  TraceView::Context.fromString(context) if context
end