How can I customise some of a module's settings? Say in module.logging
I would like to override some of the settings that weren't explicitly flagged up as :^displace
, is there a way to do this?
The way I'm reading the modules', duct's and integrant's sources I cannot make, say, some part of timbre's config overridden either through an entry in duct's base config map, nor in module's option map. Effectively, the two modules I have dug into - web and logging - both seem to support setting the environment and that's just about it.
I expected the modules to support full-blown overloading of whatever "defaults" they provide, otherwise they are good for providing neat defaults but if they're not tweakable what advantage do I get by using duct over integrant + something like say environ?
Ultimately, I think the fix to the existing modules to make them configurable is an easy one (simply merge in the module config sans the :environment
key as the rightmost value) and would make modules a lot more useful. Am I missing something?
Just had another look at the two modules and you are of course correct (the config bits are displace
-able. I will leave this long embarrassment of mine here for others to find since the docs are sparse and unless one looks through the sources it's actually helpful to know that you can override the defaults from the module.
Yes, this would be worth mentioning in the docs. I think I might have done in the duct/core README, but the documentation isn't all in a single place.
Far from me to complain about this, however - I didn't do all the heavy lifting in creating all of the libraries/framework. Thanks for all the explanations, and for the actual projects themselves!
By convention modules don't override keys you've added (or shouldn't), so you can override the modules just by adding keys of your own to the configuration.
If you find a case where a module is overwriting your configuration, please open an issue for it. User configuration should take precedent.