def instrument_methods(client_class, requested_methods = METHODS)
supported_methods_for(client_class, requested_methods).each do |method_name|
visibility = NewRelic::Helper.instance_method_visibility client_class, method_name
method_name_without = "#{method_name}_without_newrelic_trace""#{method_name}_without_newrelic_trace"
client_class.class_eval do
alias_method method_name_without, method_name
define_method method_name do |*args, &block|
segment = NewRelic::Agent::Transaction.start_datastore_segment "Memcached", method_name
begin
send method_name_without, *args, &block
ensure
if NewRelic::Agent.config[:capture_memcache_keys]
segment.notice_nosql_statement "#{method_name} #{args.first.inspect}"
end
segment.finish
end
end
send visibility, method_name
send visibility, method_name_without
end
end
end