module Datadog::Contrib::ActionView::Instrumentation::TemplateRenderer::Rails31Plus
Legacy shared code for Rails
>= 3.1 template rendering
Attributes
active_datadog_span[RW]
Public Instance Methods
datadog_render_template(template, layout_name)
click to toggle source
# File lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb, line 114 def datadog_render_template(template, layout_name) # update the tracing context with computed values before the rendering template_name = template.try('identifier') template_name = Utils.normalize_template_name(template_name) layout = layout_name.try(:[], 'virtual_path') # Proc can be called without parameters since Rails 6 if template_name active_datadog_span.resource = template_name active_datadog_span.set_tag( Ext::TAG_TEMPLATE_NAME, template_name ) end if layout active_datadog_span.set_tag( Ext::TAG_LAYOUT, layout ) end # Measure service stats Contrib::Analytics.set_measured(active_datadog_span) end
render(*args, &block)
click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb, line 92 def render(*args, &block) datadog_tracer.trace( Ext::SPAN_RENDER_TEMPLATE, span_type: Datadog::Ext::HTTP::TEMPLATE ) do |span| with_datadog_span(span) { super(*args, &block) } end end
render_template(*args)
click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb, line 101 def render_template(*args) begin template, layout_name = datadog_parse_args(*args) datadog_render_template(template, layout_name) 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/template_renderer.rb, line 143 def datadog_tracer Datadog.configuration[:action_view][:tracer] end
with_datadog_span(span) { || ... }
click to toggle source
# File lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb, line 147 def with_datadog_span(span) self.active_datadog_span = span yield ensure self.active_datadog_span = nil end