class Nexaas::Auditor::StatisticsTrackers::Base
Public Instance Methods
track_count(metric:, value: nil)
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 6 def track_count(metric:, value: nil) value ||= 1 track(:count, metric, value) end
track_value(metric:, value:)
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 11 def track_value(metric:, value:) track(:value, metric, value) end
Private Instance Methods
full_metric_name(name)
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 29 def full_metric_name(name) if @namespace.to_s == '' name else "#{@namespace}.#{name}" end end
safe_call() { |block| ... }
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 49 def safe_call(&block) begin yield(block) rescue => exception logger.fatal("role=nexaas-auditor class=#{self.class} measure=errors.unable_to_track exception=#{exception.class}") end end
send_track(type, full_name, value)
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 25 def send_track(type, full_name, value) raise "Not Implemented, override in subclass." end
track(type, name, value)
click to toggle source
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 17 def track(type, name, value) validate_value!(value, type) full_name = full_metric_name(name) validate_name!(name, full_name) safe_call { send_track(type, full_name, value) } end
validate_name!(name, full_name)
click to toggle source
allowed chars: a-z, A-Z, `.`, `-` and `_`
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 38 def validate_name!(name, full_name) if (name.to_s == '') || !(full_name =~ /\A[a-zA-Z0-9\.\-_]+\Z/) raise ArgumentError, "unsuported metric name: '#{name}'" end end
validate_value!(value, type)
click to toggle source
allowed values: Numeric (Integer, Float, Decimal, etc)
# File lib/nexaas/auditor/statistics_trackers/base.rb, line 45 def validate_value!(value, type) raise ArgumentError, "unsuported value: #{value} (#{value.class})" unless value.is_a?(Numeric) end