module Metrics::Backend::Test::Interface

Public Instance Methods

metric(name, type, description: nil, unit: nil, &block) click to toggle source
# File lib/metrics/backend/test.rb, line 49
def metric(name, type, description: nil, unit: nil, &block)
        unless name.is_a?(String)
                raise ArgumentError, "Invalid name (must be String): #{name.inspect}!"
        end
        
        unless name =~ VALID_METRIC_NAME
                raise ArgumentError, "Invalid name (must match #{VALID_METRIC_NAME}): #{name.inspect}!"
        end
        
        unless type.is_a?(Symbol)
                raise ArgumentError, "Invalid type (must be Symbol): #{type.inspect}!"
        end
        
        # Description is optional but must be string if given:
        if description
                unless description.is_a?(String)
                        raise ArgumentError, "Invalid description (must be String): #{description.inspect}!"
                end
        end
        
        # Unit is optional but must be string if given:
        if unit
                unless unit.is_a?(String)
                        raise ArgumentError, "Invalid unit (must be String): #{unit.inspect}!"
                end
        end
        
        return Metric.new(name, type, description, unit)
end