class RailsConfigValidator::Validator
Attributes
config_path[R]
schema_path[R]
Public Class Methods
new(config_name, env, options = {})
click to toggle source
# File lib/rails_config_validator/validator.rb, line 8 def initialize(config_name, env, options = {}) @pwd = options[:pwd] || '.' @config_path = options[:config_path] || build_config_path(config_name) @schema_path = options[:schema_path] || build_schema_path(config_name) @env = env @raise_errors = options.fetch(:raise_errors, true) end
Public Instance Methods
meta_validate()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 38 def meta_validate meta_validator = Kwalify::MetaValidator.instance errors = meta_validator.validate(schema) errors.map do |error| "[#{error.path}](#{error.error_symbol}) #{error.message}" end rescue Errno::ENOENT => e raise InvalidSchemaError, e end
valid!()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 23 def valid! mv = meta_validate return error( InvalidSchemaError, "Incorrect schema #{schema_path}; errors: #{mv}" ) unless mv.empty? v = validate error( InvalidConfigurationError, "Incorrect config #{config_path}; errors: #{v}" ) unless v.empty? rescue InvalidConfigurationError, InvalidSchemaError => e error(e.class, e) end
valid?()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 16 def valid? meta_validate.empty? && validate.empty? rescue # ignored false end
validate()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 48 def validate validator = kwalify_validator env_settings = env_config errors = validator.validate(env_settings) errors.map do |error| "[#{error.path}](#{error.error_symbol}) #{error.message}" end rescue InvalidConfigurationError => e [e.message] rescue Errno::ENOENT => e raise InvalidConfigurationError, e end
Private Instance Methods
build_config_path(config_name)
click to toggle source
# File lib/rails_config_validator/validator.rb, line 93 def build_config_path(config_name) File.join(@pwd, 'config', "#{config_name}.yml") end
build_schema_path(config_name)
click to toggle source
# File lib/rails_config_validator/validator.rb, line 97 def build_schema_path(config_name) File.join(@pwd, 'config', 'schemas', "#{config_name}.schema.yml") end
config()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 80 def config YAML.load(ERB.new(File.read(config_path)).result) end
env_config()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 84 def env_config document = config raise InvalidConfigurationError, "config file #{config_path} is empty" unless document raise InvalidConfigurationError, "missing configuration for env #{@env} in #{config_path}" unless document.key?(@env) document[@env] end
error(*args)
click to toggle source
# File lib/rails_config_validator/validator.rb, line 65 def error(*args) raise(*args) if @raise_errors warn(args.join("\n")) # Ruby 1.9 accepts only single argument end
kwalify_validator()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 70 def kwalify_validator Kwalify::Validator.new(schema) rescue Errno::ENOENT => e raise InvalidSchemaError, e end
schema()
click to toggle source
# File lib/rails_config_validator/validator.rb, line 76 def schema YAML.load_file(schema_path) end