class App
extend Dry::Configurable
# Pass a block for nested configuration (works to any depth)
setting :database do
# Can pass a default value
setting :dsn, 'sqlite:memory'
end
# Defaults to nil if no default value is given
setting :adapter
# Passing the reader option as true will create reader method for the class
setting :pool, 5, reader: true
# Passing the reader attributes works with nested configuration
setting :uploader, reader: true do
setting :bucket, 'dev'
end
end
App.configure do |config|
config.database.dsn = 'jdbc:sqlite:memory'
end
App.config.database.dsn
# => 'jdbc:sqlite:memory'
App.config.adapter # => nil
App.pool # => 5
App.uploader.bucket # => 'dev'
See LICENSE
file.