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