class Longleaf::ServiceDefinitionValidator

Validates application configuration of service definitions

Public Class Methods

new(config) click to toggle source

@param config [Hash] hash containing the application configuration

Calls superclass method Longleaf::ConfigurationValidator::new
# File lib/longleaf/services/service_definition_validator.rb, line 14
def initialize(config)
  super(config)
end

Protected Instance Methods

validate() click to toggle source

Validates configuration to ensure that it is syntactically correct and does not violate schema requirements. @param config [Hash] hash containing the application configuration

# File lib/longleaf/services/service_definition_validator.rb, line 22
def validate
  assert("Configuration must be a hash, but a #{@config.class} was provided", @config.class == Hash)
  assert("Configuration must contain a root '#{AF::SERVICES}' key", @config.key?(AF::SERVICES))
  services = @config[AF::SERVICES]
  assert("'#{AF::SERVICES}' must be a hash of services", services.class == Hash)

  services.each do |name, properties|
    register_on_failure do
      assert("Name of service definition must be a string, but was of type #{name.class}", name.instance_of?(String))
      assert("Service definition '#{name}' must be a hash, but a #{properties.class} was provided", properties.is_a?(Hash))

      work_script = properties[SF::WORK_SCRIPT]
      assert("Service definition '#{name}' must specify a '#{SF::WORK_SCRIPT}' property", !work_script.nil? && !work_script.empty?)
    end
  end
end