class ScoutApm::Instruments::ActionView

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 15
def initialize(context)
  @context = context
  @installed = false
end

Public Instance Methods

install() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 32
def install
  return unless defined?(::ActionView) && defined?(::ActionView::PartialRenderer)

  if prependable?
    install_using_prepend
  else
    install_using_tracer
  end
  @installed = true
end
install_using_prepend() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 69
def install_using_prepend
  logger.info "Instrumenting ActionView::PartialRenderer"
  ::ActionView::PartialRenderer.prepend(ActionViewPartialRendererInstruments)

  logger.info "Instrumenting ActionView::TemplateRenderer"
  ::ActionView::TemplateRenderer.prepend(ActionViewTemplateRendererInstruments)
end
install_using_tracer() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 43
def install_using_tracer
  logger.info "Instrumenting ActionView::PartialRenderer"
  ::ActionView::PartialRenderer.class_eval do
    include ScoutApm::Tracer

    instrument_method :render_partial,
      :type => "View",
      :name => '#{@template.virtual_path rescue "Unknown Partial"}/Rendering',
      :scope => true

    instrument_method :collection_with_template,
      :type => "View",
      :name => '#{@template.virtual_path rescue "Unknown Collection"}/Rendering',
      :scope => true
  end

  logger.info "Instrumenting ActionView::TemplateRenderer"
  ::ActionView::TemplateRenderer.class_eval do
    include ScoutApm::Tracer
    instrument_method :render_template,
      :type => "View",
      :name => '#{args[0].virtual_path rescue "Unknown"}/Rendering',
      :scope => true
  end
end
installed?() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 24
def installed?
  @installed
end
logger() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 20
def logger
  context.logger
end
prependable?() click to toggle source
# File lib/scout_apm/instruments/action_view.rb, line 28
def prependable?
  context.environment.supports_module_prepend?
end