class Metrician::Memcache
Constants
- CACHE_METRIC
- METHODS
Public Class Methods
dalli_gem?()
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 11 def self.dalli_gem? !!defined?(::Dalli) && !!defined?(::Dalli::Client) end
enabled?()
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 22 def self.enabled? (memcached_gem? || dalli_gem?) && Metrician.configuration[:cache][:enabled] end
memcached_gem?()
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 7 def self.memcached_gem? !!defined?(::Memcached) end
Public Instance Methods
client_classes()
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 15 def client_classes classes = [] classes << Memcached if self.class.memcached_gem? classes << Dalli::Client if self.class.dalli_gem? classes end
instrument()
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 27 def instrument client_classes.each do |client_class| instrument_class(client_class) end end
instrument_class(client_class)
click to toggle source
# File lib/metrician/reporters/memcache.rb, line 33 def instrument_class(client_class) return if client_class.method_defined?(:get_with_metrician_time) METHODS.each do |method_name| next unless client_class.method_defined?(method_name) client_class.class_eval <<-RUBY def #{method_name}_with_metrician_time(*args, &blk) start_time = Time.now begin #{method_name}_without_metrician_time(*args, &blk) ensure duration = (Time.now - start_time).to_f Metrician.gauge(::Metrician::Memcache::CACHE_METRIC, duration) if Metrician.configuration[:cache][:command][:enabled] Metrician.gauge("#{::Metrician::Memcache::CACHE_METRIC}.#{method_name}", duration) if Metrician.configuration[:cache][:command_specific][:enabled] end end alias #{method_name}_without_metrician_time #{method_name} alias #{method_name} #{method_name}_with_metrician_time RUBY end end