module TzuStats
Constants
- VERSION
Public Class Methods
extended(base)
click to toggle source
# File lib/tzu_stats.rb, line 4 def self.extended(base) base.send :extend, StatsD::Instrument # measures time taken base.statsd_measure :run!, ->(obj, args) { "#{obj.class.to_s}.run" } # count success, invalid & failure base.statsd_count_outcomes :run!, ->(obj, args) { "#{obj.class.to_s}.run" } end
Public Instance Methods
statsd_count_outcomes(method, name, *metric_options)
click to toggle source
# File lib/tzu_stats.rb, line 14 def statsd_count_outcomes(method, name, *metric_options) add_to_method(method, name, :count_outcomes) do |old_method, new_method, metric_name| define_method(new_method) do |*args, &block| begin truthiness = result = send(old_method, *args, &block) rescue => e truthiness, exception = false, e raise else result ensure if truthiness suffix = 'success' else suffix = exception && exception.is_a?(Tzu::Invalid) ? 'invalid' : 'failure' end key = "#{StatsD::Instrument.generate_metric_name(metric_name, self, *args)}.#{suffix}" StatsD.increment(key, 1, *metric_options) end end end end