Sha256: a2767ed5a5f490896f2d2e20124e11885aa0c1b2d6458f7cae219cbb1594b23c

Contents?: true

Size: 1.03 KB

Versions: 10

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Mnemosyne
  module Probes
    module ActionController
      module Renderers
        CATEGORY = 'render_to_body.renderers.action_controller'

        class Probe < ::Mnemosyne::Probe
          subscribe CATEGORY

          def setup
            ::ActionController::Base.prepend Instrumentation
          end

          def call(trace, _name, start, finish, _id, _payload)
            start  = ::Mnemosyne::Clock.to_tick(start)
            finish = ::Mnemosyne::Clock.to_tick(finish)

            span = ::Mnemosyne::Span.new 'app.controller.renderers.rails',
              start: start, finish: finish

            trace << span
          end
        end

        module Instrumentation
          def render_to_body(*args, &block)
            ::ActiveSupport::Notifications.instrument CATEGORY do
              super
            end
          end
        end
      end
    end

    register 'ActionController::Base',
      'action_controller/metal/renderers',
      ActionController::Renderers::Probe.new
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mnemosyne-ruby-1.17.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.16.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.15.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.14.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.13.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.12.1 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.12.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.11.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.10.0 lib/mnemosyne/probes/action_controller/renderers.rb
mnemosyne-ruby-1.10.0.beta1 lib/mnemosyne/probes/action_controller/renderers.rb