Class: Vcloud::Core::ConfigLoader
- Inherits:
-
Object
- Object
- Vcloud::Core::ConfigLoader
- Defined in:
- lib/vcloud/core/config_loader.rb
Instance Method Summary collapse
-
#load_config(config_file, schema = nil, vars_file = nil) ⇒ Hash
Loads the configuration from
config_file, optionally renderingconfig_fileas a Mustache template using vars invars_fileand optionally validating config againstschemasupplied.
Instance Method Details
#load_config(config_file, schema = nil, vars_file = nil) ⇒ Hash
Loads the configuration from config_file, optionally rendering config_file as a Mustache template using vars in vars_file and optionally validating config against schema supplied.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/vcloud/core/config_loader.rb', line 18 def load_config(config_file, schema = nil, vars_file = nil) if vars_file rendered_config = Mustache.render( File.read(config_file), YAML::load_file(vars_file) ) input_config = YAML::load(rendered_config) else input_config = YAML::load_file(config_file) end # There is no way in YAML or Ruby to symbolize keys in a hash json_string = JSON.generate(input_config) config = JSON.parse(json_string, :symbolize_names => true) if schema validation = Core::ConfigValidator.validate(:base, config, schema) validation.warnings.each do |warning| Vcloud::Core.logger.warn(warning) end unless validation.valid? validation.errors.each do |error| Vcloud::Core.logger.fatal(error) end raise("Supplied configuration does not match supplied schema") end end config end |