Sha256: c6cb12073b74d3711c5b3ef1c88313a952f066232ded74293bf8f7f096ffb7c9

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

module PlainApm
  module Hooks
    class ActionView < ActiveSupportSubscriber
      NOTIFICATION_PATTERN = /\A[^!]\w+\.action_view\Z/.freeze

      private

      def notification_pattern
        NOTIFICATION_PATTERN
      end

      def payload(event)
        name, base = attributes_from_notification(event)
        payload = event.payload

        case name
        when "render_collection"
          base.tap do |o|
            o[:identifier] = identifier(payload[:identifier])
            o[:layout] = payload[:layout]
            o[:count] = payload[:count]
            o[:cache_hits] = payload[:cache_hits]
          end
        when "render_layout"
          base.tap do |o|
            o[:identifier] = identifier(payload[:identifier])
          end
        when "render_template"
          base.tap do |o|
            o[:identifier] = identifier(payload[:identifier])
            o[:layout] = payload[:layout]
          end
        when "render_partial"
          base.tap do |o|
            o[:identifier] = identifier(payload[:identifier])
            o[:layout] = payload[:layout]
            o[:cache_hit] = payload[:cache_hit]
          end
        else
          nil
        end
      end

      # strip rails root
      def identifier(id)
        return id if self.class.rails_root.nil? || id.nil?
        id.start_with?(self.class.rails_root) ? id[self.class.rails_root.length + 1..-1] : id # standard:disable Style/SlicingWithRange
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
plain_apm-0.10.2 lib/plain_apm/hooks/action_view.rb
plain_apm-0.10.0 lib/plain_apm/hooks/action_view.rb
plain_apm-0.9.8 lib/plain_apm/hooks/action_view.rb
plain_apm-0.9.7 lib/plain_apm/hooks/action_view.rb
plain_apm-0.9.6 lib/plain_apm/hooks/action_view.rb