Module: NewRelic::Agent::Instrumentation::Memcache

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

Class Method Summary collapse

Class Method Details

.instrument_methods(the_class, method_names) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/new_relic/agent/instrumentation/memcache.rb', line 13

def instrument_methods(the_class, method_names)
  method_names.each do |method_name|
    next unless the_class.method_defined? method_name.to_sym
    the_class.class_eval "def \#{method_name}_with_newrelic_trace(*args, &block)\nmetrics = [\"Memcache/\#{method_name}\",\n(NewRelic::Agent::Instrumentation::MetricFrame.recording_web_transaction? ? 'Memcache/allWeb' : 'Memcache/allOther')]\nself.class.trace_execution_scoped(metrics) do\nt0 = Time.now\nbegin\n\#{method_name}_without_newrelic_trace(*args, &block)\nensure\n\#{memcache_key_snippet(method_name)}\nend\nend\nend\nalias \#{method_name}_without_newrelic_trace \#{method_name}\nalias \#{method_name} \#{method_name}_with_newrelic_trace\n"
 end      
end

.memcache_key_snippet(method_name) ⇒ Object



34
35
36
37
# File 'lib/new_relic/agent/instrumentation/memcache.rb', line 34

def memcache_key_snippet(method_name)
  return "" unless NewRelic::Agent.config[:capture_memcache_keys]
  "NewRelic::Agent.instance.transaction_sampler.notice_nosql(args.first.inspect, (Time.now - t0).to_f) rescue nil"
end