Module: NewRelic::Agent::Instrumentation::IgnoreActions

Defined in:
lib/new_relic/agent/instrumentation/ignore_actions.rb

Class Method Summary collapse

Class Method Details

.is_filtered?(key, klass, action_name) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/new_relic/agent/instrumentation/ignore_actions.rb', line 9

def self.is_filtered?(key, klass, action_name)
  # We'll walk the superclass chain and see if
  # any class says 'yes, filter this one'.

  while klass.respond_to?(:newrelic_read_attr)
    ignore_actions = klass.newrelic_read_attr(key)

    should_filter = case ignore_actions
    when Hash
      only_actions = Array(ignore_actions[:only])
      except_actions = Array(ignore_actions[:except])
      action_name = action_name.to_sym

      only_actions.include?(action_name) || (!except_actions.empty? && !except_actions.include?(action_name))
    else
      !ignore_actions.nil?
    end

    return true if should_filter

    # Nothing so far says we should filter,
    # so keep checking up the superclass chain.
    klass = klass.superclass
  end

  # Getting here means that no class filtered this.
  false
end