From 8e151ed7f0cedb2b91d942c8b83f9195a1850092 Mon Sep 17 00:00:00 2001 From: Jon Roberts Date: Fri, 14 Jul 2023 10:53:26 -0500 Subject: [PATCH 1/2] Allow nested settings to default to `Undefined` --- lib/dry/configurable/dsl.rb | 2 +- spec/integration/dry/configurable/defaults_spec.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/dry/configurable/dsl.rb b/lib/dry/configurable/dsl.rb index d2f7aca9..cdd8fd79 100644 --- a/lib/dry/configurable/dsl.rb +++ b/lib/dry/configurable/dsl.rb @@ -38,7 +38,7 @@ def setting(name, **options, &block) # rubocop:disable Metrics/AbcSize, Metrics/ node = [:setting, [name.to_sym, options]] if block - ast << [:nested, [node, DSL.new(&block).ast]] + ast << [:nested, [node, DSL.new(**@options, &block).ast]] else ast << node end diff --git a/spec/integration/dry/configurable/defaults_spec.rb b/spec/integration/dry/configurable/defaults_spec.rb index ae2a3c55..d80b7b24 100644 --- a/spec/integration/dry/configurable/defaults_spec.rb +++ b/spec/integration/dry/configurable/defaults_spec.rb @@ -8,11 +8,15 @@ setting :foo setting :bar, constructor: -> v { v.upcase } setting :baz, default: "baz", constructor: -> v { v.upcase } + setting :qux do + setting :quux + end end expect(klass.config.foo).to be(Dry::Configurable::Undefined) expect(klass.config.bar).to be(Dry::Configurable::Undefined) expect(klass.config.baz).to eq "BAZ" + expect(klass.config.qux.quux).to be(Dry::Configurable::Undefined) klass.configure do |config| config.foo = "foo" From a908bc8dcaaf7591b54a0801b3ca39e3ae79b8ba Mon Sep 17 00:00:00 2001 From: Jon Roberts Date: Fri, 14 Jul 2023 11:16:17 -0500 Subject: [PATCH 2/2] unfreeze immutable regex, for rubocop --- lib/dry/configurable/dsl.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dry/configurable/dsl.rb b/lib/dry/configurable/dsl.rb index cdd8fd79..20facea5 100644 --- a/lib/dry/configurable/dsl.rb +++ b/lib/dry/configurable/dsl.rb @@ -6,7 +6,7 @@ module Configurable # # @api private class DSL - VALID_NAME = /\A[a-z_]\w*\z/i.freeze + VALID_NAME = /\A[a-z_]\w*\z/i attr_reader :compiler