Powerful configuration Ruby-framework with a support for many commonly used config formats with a multi-functional API, developer-friendly DSL and object-oriented behavior.
MIT License
23
stars
8
forks
source link
Nested config validation and configure not raises error #121
If we use methods like validate_with and configure with nested deep setting structure and custom validation methods, validation methods gets old settings payload and always returns true
Code
class FlatConfig < Qonfig::DataSet
expose_yaml Rails.root.join('tmp/flat_config.yml'), via: :env_key, env: :default
validate by: :some_validation_method
def some_validation_method
puts "try to validate settings.some_key = #{settings.some_key}"
settings.some_key != 'bad'
end
end
class NestedDeepConfig < Qonfig::DataSet
expose_yaml Rails.root.join('tmp/deep_config.yml'), via: :env_key, env: :default
validate by: :some_validation_method
def some_validation_method
puts "try to validate settings.some_key.some_key2 = #{settings.some_key.some_key2}"
settings.some_key.some_key2 != 'bad' # HERE we have settings.some_key.some_key2 = good
end
end
end
Summary
If we use methods like
validate_with
andconfigure
with nested deep setting structure and custom validation methods, validation methods gets old settings payload and always returns trueCode
example 1 (flat)
example 2 (nested)
tmp/flat_config.yml
tmp/deep_config.yml
Expected behavior
valid_with?
= falseconfigure(invalid_payload)
- raises errorvalid_with?
= falseconfigure(invalid_payload)
- raises errorCurrent behavior
valid_with?
= falseconfigure(invalid_payload)
- raises errorvalid_with?
= trueconfigure(invalid_payload)
- no error raises =(