module Datadog::Contrib::ActionView::Instrumentation::PartialRenderer

Legacy instrumentation for partial rendering for Rails < 4

Attributes

active_datadog_span[RW]

Public Instance Methods

datadog_render_partial(template) click to toggle source
# File lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb, line 31
def datadog_render_partial(template)
  template_name = Utils.normalize_template_name(template.try('identifier'))

  if template_name
    active_datadog_span.resource = template_name
    active_datadog_span.set_tag(
      Ext::TAG_TEMPLATE_NAME,
      template_name
    )

    # Measure service stats
    Contrib::Analytics.set_measured(active_datadog_span)
  end
end
render(*args, &block) click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb, line 9
def render(*args, &block)
  datadog_tracer.trace(
    Ext::SPAN_RENDER_PARTIAL,
    span_type: Datadog::Ext::HTTP::TEMPLATE
  ) do |span|
    with_datadog_span(span) { super(*args) }
  end
end
render_partial(*args) click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb, line 18
def render_partial(*args)
  begin
    template = datadog_template(*args)

    datadog_render_partial(template)
  rescue StandardError => e
    Datadog.logger.debug(e.message)
  end

  # execute the original function anyway
  super(*args)
end

Private Instance Methods

datadog_tracer() click to toggle source
# File lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb, line 50
def datadog_tracer
  Datadog.configuration[:action_view][:tracer]
end
with_datadog_span(span) { || ... } click to toggle source
# File lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb, line 54
def with_datadog_span(span)
  self.active_datadog_span = span
  yield
ensure
  self.active_datadog_span = nil
end