Sha256: 2022756ffc4a11860885ec6d0b2bc43868c1a424ed213de3f753f7d9f8879594

Contents?: true

Size: 1.56 KB

Versions: 6

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

module PlainApm
  module Hooks
    class ActiveSupport < ActiveSupportSubscriber
      NOTIFICATION_PATTERN = /\Acache_[\w\?]+\.active_support\Z/.freeze

      private

      def notification_pattern
        NOTIFICATION_PATTERN
      end

      def payload(event)
        name, source = *event.name.split(".")
        payload = event.payload

        base = {
          "source" => source,
          "name" => name,
          "backtrace" => filtered_backtrace,
          "started_at" => event.time,
          "finished_at" => event.end,
          "allocations" => event.allocations,
          "thread_allocations" => event.thread_allocations,
          "store" => payload[:store]
        }

        case name
        when "cache_read"
          base.merge({
            "key" => payload[:key],
            "hit" => payload[:hit],
            "trigger" => payload[:super_operation],
          })
        when "cache_read_multi"
          base.merge({
            "keys" => payload[:key],
            "hits" => payload[:hits]
          })
        when "cache_fetch_hit"
          base.merge({
            "key" => payload[:key],
            "hit" => true
          })
        when "cache_write", "cache_write_multi", "cache_generate", "cache_delete", "cache_delete_matched", "cache_exist?"
          base.merge({
            "key" => payload[:key]
          })
        when "cache_increment", "cache_decrement"
          base.merge({
            "key" => payload[:key],
            "amount" => payload[:amount]
          })
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
plain_apm-0.6.6 lib/plain_apm/hooks/active_support.rb
plain_apm-0.6.5 lib/plain_apm/hooks/active_support.rb
plain_apm-0.6.4 lib/plain_apm/hooks/active_support.rb
plain_apm-0.6.3 lib/plain_apm/hooks/active_support.rb
plain_apm-0.6.2 lib/plain_apm/hooks/active_support.rb
plain_apm-0.6.1 lib/plain_apm/hooks/active_support.rb