dry-configurable 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88d85d11d0d2a3b9ad67cd8e6edf2873f4e77976
|
4
|
+
data.tar.gz: 5ed14500e8ab67b2b87e5e8cae5d8c5826b52649
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a79bb4089fb04ab2efab2572b74d7dda4d0564bef8f796cb4a6d0fda4bbfa5f45f2237604eea590bfeafbfbd4245fcce3f96acbcc1b71ced5a94d6e15821549
|
7
|
+
data.tar.gz: 2ef0507f31d224efa6f0d0c378a2bbfaed11854671c106a5a840083e9ae7e08124beaff2fe3093ce9e992be5f8e6f2842bf9da652548ed0a013908d3a4c64c27
|
data/lib/dry/configurable.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'concurrent'
|
2
2
|
require 'dry/configurable/config'
|
3
|
+
require 'dry/configurable/nested_config'
|
3
4
|
require 'dry/configurable/config/value'
|
4
5
|
require 'dry/configurable/version'
|
5
6
|
|
@@ -112,16 +113,25 @@ module Dry
|
|
112
113
|
|
113
114
|
# @private
|
114
115
|
def _config_for(&block)
|
115
|
-
|
116
|
-
config_klass.instance_eval(&block)
|
117
|
-
config_klass.config
|
116
|
+
::Dry::Configurable::NestedConfig.new(&block)
|
118
117
|
end
|
119
118
|
|
120
119
|
# @private
|
121
120
|
def create_config
|
122
121
|
@_config_mutex.synchronize do
|
122
|
+
create_config_for_nested_configurations
|
123
123
|
@_config = ::Dry::Configurable::Config.create(_settings) unless _settings.empty?
|
124
124
|
end
|
125
125
|
end
|
126
|
+
|
127
|
+
# @private
|
128
|
+
def create_config_for_nested_configurations
|
129
|
+
nested_configs.map { |nested_config| nested_config.create_config }
|
130
|
+
end
|
131
|
+
|
132
|
+
# @private
|
133
|
+
def nested_configs
|
134
|
+
_settings.select { |setting| setting.value.kind_of?(::Dry::Configurable::NestedConfig) }.map(&:value)
|
135
|
+
end
|
126
136
|
end
|
127
137
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Dry
|
2
|
+
module Configurable
|
3
|
+
# @private
|
4
|
+
class NestedConfig
|
5
|
+
def initialize(&block)
|
6
|
+
klass = ::Class.new { extend ::Dry::Configurable }
|
7
|
+
klass.instance_eval(&block)
|
8
|
+
@klass = klass
|
9
|
+
end
|
10
|
+
|
11
|
+
# @private no, really...
|
12
|
+
def create_config
|
13
|
+
if @klass.instance_variables.include?(:@_config)
|
14
|
+
@klass.__send__(:create_config)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def config
|
21
|
+
@klass.config
|
22
|
+
end
|
23
|
+
|
24
|
+
def method_missing(method, *args, &block)
|
25
|
+
config.respond_to?(method) ? config.public_send(method, *args, &block) : super
|
26
|
+
end
|
27
|
+
|
28
|
+
def respond_to_missing?(method, _include_private = false)
|
29
|
+
config.respond_to?(method) || super
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -249,9 +249,13 @@ RSpec.shared_examples 'a configurable class' do
|
|
249
249
|
describe 'reset_config' do
|
250
250
|
before do
|
251
251
|
klass.setting :dsn, nil
|
252
|
+
klass.setting :pool do
|
253
|
+
setting :size, nil
|
254
|
+
end
|
252
255
|
|
253
256
|
klass.configure do |config|
|
254
257
|
config.dsn = 'sqlite:memory'
|
258
|
+
config.pool.size = 5
|
255
259
|
end
|
256
260
|
|
257
261
|
klass.reset_config
|
@@ -259,6 +263,7 @@ RSpec.shared_examples 'a configurable class' do
|
|
259
263
|
|
260
264
|
it 'resets configuration to default values' do
|
261
265
|
expect(klass.config.dsn).to be_nil
|
266
|
+
expect(klass.config.pool.size).to be_nil
|
262
267
|
end
|
263
268
|
end
|
264
269
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-configurable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Holland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- lib/dry/configurable.rb
|
88
88
|
- lib/dry/configurable/config.rb
|
89
89
|
- lib/dry/configurable/config/value.rb
|
90
|
+
- lib/dry/configurable/nested_config.rb
|
90
91
|
- lib/dry/configurable/test_interface.rb
|
91
92
|
- lib/dry/configurable/version.rb
|
92
93
|
- rakelib/rubocop.rake
|