I got tired of writing configuration classes for everything I do, and packaged it all up in a tiny gem: Construct.
Highlights
OpenStruct-style access to key-value pairs.
config.offices = ['Sydney', 'Tacoma']Nested structures are easy to handle.
config.fruits = {
:banana => 'slightly radioactive',
:apple => 'safe'
}
config.fruits.banana # => 'slightly radioactive'Overridable, self-documenting schemas for default values.
config.define(:address, :default => '1 North College St')
config.address # => '1 North College St'
config.address = 'Urnud'
config.address # => 'Urnud'Straightforward YAML saving and loading.
config.to_yaml; Construct.load(yaml)Define whatever methods you like on your config.
class Config < Construct
def fooo
foo + 'o'
end
endIt's available as a gem:
gem install construct