Class: Metrician::Memcache
- Defined in:
- lib/metrician/reporters/memcache.rb
Constant Summary collapse
- CACHE_METRIC =
"cache.command".freeze
- METHODS =
i[get delete cas prepend append replace decrement increment add set].freeze
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Reporter
Class Method Details
.dalli_gem? ⇒ Boolean
11 12 13 |
# File 'lib/metrician/reporters/memcache.rb', line 11 def self.dalli_gem? !!defined?(::Dalli) && !!defined?(::Dalli::Client) end |
.enabled? ⇒ Boolean
22 23 24 25 |
# File 'lib/metrician/reporters/memcache.rb', line 22 def self.enabled? (memcached_gem? || dalli_gem?) && Metrician.configuration[:cache][:enabled] end |
.memcached_gem? ⇒ Boolean
7 8 9 |
# File 'lib/metrician/reporters/memcache.rb', line 7 def self.memcached_gem? !!defined?(::Memcached) end |
Instance Method Details
#client_classes ⇒ Object
15 16 17 18 19 20 |
# 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 ⇒ Object
27 28 29 30 31 |
# 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) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# 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 " def \#{method_name}_with_metrician_time(*args, &blk)\n start_time = Time.now\n begin\n \#{method_name}_without_metrician_time(*args, &blk)\n ensure\n duration = (Time.now - start_time).to_f\n Metrician.gauge(::Metrician::Memcache::CACHE_METRIC, duration) if Metrician.configuration[:cache][:command][:enabled]\n Metrician.gauge(\"\#{::Metrician::Memcache::CACHE_METRIC}.\#{method_name}\", duration) if Metrician.configuration[:cache][:command_specific][:enabled]\n end\n end\n alias \#{method_name}_without_metrician_time \#{method_name}\n alias \#{method_name} \#{method_name}_with_metrician_time\n RUBY\n end\nend\n" |