Releases: dry-rb/dry-configurable
Releases · dry-rb/dry-configurable
v0.12.1
Added
- Settings may be specified with a
cloneable
option, e.g.
setting :component_dirs, Configuration::ComponentDirs.new, cloneable: true
This change makes it possible to provide “rich” config values that carry their own
configuration interface.
In the above example, ComponentDirs
could provide its own API for adding component
dirs and configuring aspects of their behavior at the same time. By being passed to
the setting along with cloneable: true
, dry-configurable will ensure the setting's
values are cloned along with the setting at all the appropriate times.
A custom cloneable setting value should provide its own #initialize_copy
(used by
Object#dup
) with the appropriate logic. (@timriley in #102)
Fixed
v0.12.0
0.12.0 2020-12-26
Fixed
- Setting values provided by defaults and/or pre-processor blocks are no longer accidentally memoized across instances of classes including Dry::Configurable (#99) (@timriley & @esparta)
Changed
- Instance behavior is now prepended, so that if you have your own
initialize
, callingsuper
is no longer required (see #98 for more details) (@zabolotnov87) - Switched to equalizer from dry-core (@solnic)
v0.11.6
Changed
- A meaningful error is raised when the extension is included more than once (issue #89 fixed via #94) (@landongrindheim)
- Evaluate setting input immediately when input is provided. This allows for earlier feedback from constructors designed to raise errors on invalid input (#95) (@timriley)
v0.11.5
v0.11.4
Fixed
Changed
Setting#inspect
no longer uses its value - this could cause crashes when inspecting settings that are yet to have a value applied (e.g. when they have a constructor that expects a value to be present) (@timriley)
v0.11.3
Fixed
- Retrieving settings by a string name works again (issue #82) (@waiting-for-dev)
v0.11.2
v0.11.1
v0.11.0
A complete rewrite of the library while keeping the public API intact. See #78 for a detailed overview.
Changed
v0.9.0
0.9.0 - 2019-11-06
Fixed
- Support for reserved names in settings. Some Kernel methods (
public_send
andclass
specifically) are not available if you use access settings via a method call. Same for methods of theConfig
class. You can still access them with[]
and[]=
. Ruby keywords are fully supported. Invalid names containing special symbols (including!
and?
) are rejected. Note that these changes don't affect thereader
option, if you define a setting named:class
and passreader: true
... well ... (flash-gordon) - Settings can be redefined in subclasses without warnings about overriding existing methods (flash-gordon)
- Fix warnings about using keyword arguments in 2.7 (koic)