class Librato::Rack::Configuration::Suites

Attributes

fields[R]

Public Class Methods

new(value, defaults) click to toggle source
# File lib/librato/rack/configuration/suites.rb, line 7
def initialize(value, defaults)
  @fields = if value.nil? || value.empty?
              defaults
            else
              resolve_suites(value, defaults)
            end
end

Public Instance Methods

include?(field) click to toggle source
# File lib/librato/rack/configuration/suites.rb, line 15
def include?(field)
  fields.include?(field)
end

Private Instance Methods

resolve_suites(value, defaults) click to toggle source
# File lib/librato/rack/configuration/suites.rb, line 21
def resolve_suites(value, defaults)
  suites = value.to_s.split(/\s*,\s*/)
  adds = suites.select { |i| i.start_with?('+') }.map { |i| i[1..-1].to_sym }
  subs = suites.select { |i| i.start_with?('-') }.map { |i| i[1..-1].to_sym }

  if adds.any? || subs.any?

    # Did they try to mix adds/subs with explicit config
    if (adds.size + subs.size) != suites.size
      raise InvalidSuiteConfiguration, "Invalid suite value #{value}"
    end

    (defaults | adds) - subs
  else
    suites.map(&:to_sym)
  end
end