Comments (8)
Nesting shouldn't be supported as it makes no sense :)
from dry-configurable.
@AMHOL I think we can close this one
from dry-configurable.
What behavior for reader should be for this example?
class Foo
extend Dry::Configurable
setting :database, reader: true do
setting :dsn, 'sqlite:memory', reader: true
end
end
from dry-configurable.
I'm not sure it would be necessary on nested settings as a reader on the root setting would make the child settings available as i.e. database.dsn
from dry-configurable.
Not sure about this as it introduces different behaviour based on the level of nesting, plus you could just use Forwardable and delegators to do the same
from dry-configurable.
@AMHOL wdym?
from dry-configurable.
@AMHOL's probably talking about what happens with something like this, for example?
setting :foo do
setting :bar, reader: true
end
from dry-configurable.
@solnic I'm not sure the option should be supported though, the way the library works it can't be implemented on the root level without also being implemented at the nested level, and I'm not sure whether a library for configuration should support an option to expand the interface of an object. With Forwardable
I meant something like:
class App
extend Dry::Configurable
class << self
extend Forwardable
def_delegator :config, :database
end
# 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
end
App.database
=> #<struct dsn="sqlite:memory">
from dry-configurable.
Related Issues (20)
- `finalize!` should freeze config recursively
- Leave setting values as `Undefined` rather than coercing to `nil` for un-set settings HOT 2
- Add `Settings#replace` to support wholesale replacement of settings in a configurable object
- Understanding the thread safety claim - random sum every program invocation HOT 1
- 0.13.0 release checklist HOT 10
- default values cannot be lazy evaluated
- Unexpected Dry::Schema::MissingMessageError HOT 1
- Add Zeitwerk autoloader HOT 1
- `v0.16.0` of dry-configurable breaks `require "dry-validation"` HOT 2
- 0.16.0 breaks Sinatra config_file HOT 9
- 0.16.0 breaking change to how settings with a `constructor` behave HOT 2
- 0.16.0 breaks Zeitwerk integration for other gems HOT 1
- Autoloading with zeitwerk results in uninitialized constant Dry::Core::ClassAttributes::IDENTITY HOT 1
- 0.15.0 broke `config.update` with constuctor requiring nested value HOT 1
- As an aside, I've also discovered similar failures if I do the same thing to the `pluralize_spec`: HOT 1
- Changelog for v1.0.2 not in main branch HOT 2
- Raise more meaningful exception when included more than once
- Config#update does not return self HOT 1
- Does not work from within a trap context HOT 5
- Values are being memoized between config instances HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dry-configurable.