Sha256: 0a30a3e80af260232884fefaf2f53cbbee00f129b8af2cbdacefc964df10412d

Contents?: true

Size: 1.84 KB

Versions: 5

Compression:

Stored size: 1.84 KB

Contents

# typed: true
require 'ddtrace/ext/http'
require 'ddtrace/contrib/patcher'
require 'ddtrace/contrib/action_view/events'
require 'ddtrace/contrib/action_view/ext'
require 'ddtrace/contrib/action_view/instrumentation/partial_renderer'
require 'ddtrace/contrib/action_view/instrumentation/template_renderer'
require 'ddtrace/contrib/action_view/utils'

module Datadog
  module Contrib
    module ActionView
      # Patcher enables patching of ActionView module.
      module Patcher
        include Contrib::Patcher

        module_function

        def target_version
          Integration.version
        end

        def patch
          patch_renderer
        end

        def patch_renderer
          if target_version >= Gem::Version.new('4.0.0')
            Events.subscribe!
          elsif defined?(::ActionView::TemplateRenderer) && defined?(::ActionView::PartialRenderer)
            # Rails < 4 compatibility:
            #  Rendering events are not nested in this version, creating
            #  render_partial spans outside of the parent render_template span.
            #  We fall back to manual patching instead.
            ::ActionView::TemplateRenderer.prepend(Instrumentation::TemplateRenderer::RailsLessThan4)
            ::ActionView::PartialRenderer.prepend(Instrumentation::PartialRenderer::RailsLessThan4)
          elsif defined?(::ActionView::Rendering) && defined?(::ActionView::Partials::PartialRenderer)
            # NOTE: Rails < 3.1 compatibility: different classes are used
            ::ActionView::Rendering.prepend(Instrumentation::TemplateRenderer::Rails30)
            ::ActionView::Partials::PartialRenderer.prepend(Instrumentation::PartialRenderer::RailsLessThan4)
          else
            Datadog.logger.debug('Expected Template/Partial classes not found; template rendering disabled')
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ddtrace-0.54.2 lib/ddtrace/contrib/action_view/patcher.rb
ddtrace-0.54.1 lib/ddtrace/contrib/action_view/patcher.rb
ddtrace-0.54.0 lib/ddtrace/contrib/action_view/patcher.rb
ddtrace-0.53.0 lib/ddtrace/contrib/action_view/patcher.rb
ddtrace-0.52.0 lib/ddtrace/contrib/action_view/patcher.rb