Sha256: c8b4b1b6418f01d621e2b162aff4b543569fd6aa93b2227498caf77f51f24dc2

Contents?: true

Size: 1.23 KB

Versions: 28

Compression:

Stored size: 1.23 KB

Contents

# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
# frozen_string_literal: true

require 'new_relic/agent/instrumentation/notifications_subscriber'

module NewRelic
  module Agent
    module Instrumentation
      class ActiveSupportSubscriber < NotificationsSubscriber
        def add_segment_params(segment, payload)
          segment.params[:key] = payload[:key]
          segment.params[:store] = payload[:store]
          segment.params[:hit] = payload[:hit] if payload.key?(:hit)
          segment.params[:super_operation] = payload[:super_operation] if payload.key?(:super_operation)
          segment
        end

        def metric_name(name, payload)
          store = payload[:store]
          method = method_from_name(name)
          "Ruby/ActiveSupport#{"/#{store}" if store}/#{method}"
        end

        PATTERN = /\Acache_([^\.]*)\.active_support\z/

        METHOD_NAME_MAPPING = Hash.new do |h, k|
          if PATTERN =~ k
            h[k] = $1
          else
            h[k] = NewRelic::UNKNOWN
          end
        end

        def method_from_name(name)
          METHOD_NAME_MAPPING[name]
        end
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
newrelic_rpm-9.17.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.16.1 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.16.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.15.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.14.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.13.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.12.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.11.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.10.2 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.10.1 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.10.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.9.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.8.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.7.1 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.7.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.6.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.5.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.4.2 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.4.1 lib/new_relic/agent/instrumentation/active_support_subscriber.rb
newrelic_rpm-9.4.0 lib/new_relic/agent/instrumentation/active_support_subscriber.rb