dry-system 1.1.1 → 1.2.0

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
  SHA256:
3
- metadata.gz: e61a3eb29bf6a29ebbb6a435f82733d10b5ea35cbf2cfa623e1d1d7d7b21f3df
4
- data.tar.gz: f9e307b866439b40542e4f8d28c9e6b45d9b2143271820c1a97f2724dac6827c
3
+ metadata.gz: 73c4548cedcd9da37980d70bf114fca9879738c1274789da138c8e43301db4db
4
+ data.tar.gz: 2c7cc8974efaaea1e998a15ea6c91cc0e6af352ec6ccce530abca9e83356203f
5
5
  SHA512:
6
- metadata.gz: 00073b13cc58e6de06cb7c3930e7cfa08af337fa6b26245da37598e7490406d803dcfca583ce6891007d5b54889da51a9bd3d19a08ed805e1abe53d4dc211cc9
7
- data.tar.gz: 19b88a8e1dc3b1d7af856fb1286f7cb96254f389c293a1665c7b8a8da144c099b685a14db53e99e0df403dd1fe0a505c6e560d90ed43e0503c6e5214650cfee6
6
+ metadata.gz: daeef02f9d5c2de8a2e66edc4474cb4ee56d0c1a0813aa967caeacb1d7cc9e0fc287667cdbb4514934599432c3ca9fa016893341dacb79fd3f56ca5b3038a1d3
7
+ data.tar.gz: '0983d69ebea6f6a4f9c653ad850aee8f5b0f5215431b3d4aa2e535b10b11a9aebb68f5305939de6e67fe03bcf8f48ba0830591b116c7ece9411f525e33277f05'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  <!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
2
2
 
3
+ ## 1.2.0 2025-01-07
4
+
5
+
6
+ ### Added
7
+
8
+ - Option to skip eager loading during finalize with `eager_load: false` (via #276) (@cllns)
9
+
10
+ ### Changed
11
+
12
+ - Update required Ruby version to 3.1 (@flash-gordon)
13
+
14
+ [Compare v1.1.1...v1.2.0](https://github.com/dry-rb/dry-system/compare/v1.1.1...v1.2.0)
15
+
3
16
  ## 1.1.1 2024-11-03
4
17
 
5
18
 
data/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  This library officially supports the following Ruby versions:
17
17
 
18
- * MRI `>= 3.0`
18
+ * MRI `>= 3.1`
19
19
  * jruby `>= 9.4` (not tested on CI)
20
20
 
21
21
  ## License
data/dry-system.gemspec CHANGED
@@ -21,20 +21,17 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = []
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
25
- spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-system/blob/main/CHANGELOG.md"
26
- spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-system"
27
- spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-system/issues"
24
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
25
+ spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-system/blob/main/CHANGELOG.md"
26
+ spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-system"
27
+ spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-system/issues"
28
+ spec.metadata["rubygems_mfa_required"] = "true"
28
29
 
29
- spec.required_ruby_version = ">= 3.0"
30
+ spec.required_ruby_version = ">= 3.1"
30
31
 
31
32
  # to update dependencies edit project.yml
32
- spec.add_runtime_dependency "dry-auto_inject", "~> 1.0"
33
- spec.add_runtime_dependency "dry-configurable", "~> 1.0"
34
- spec.add_runtime_dependency "dry-core", "~> 1.0"
35
- spec.add_runtime_dependency "dry-inflector", "~> 1.0"
36
-
37
- spec.add_development_dependency "bundler"
38
- spec.add_development_dependency "rake"
39
- spec.add_development_dependency "rspec"
33
+ spec.add_dependency "dry-auto_inject", "~> 1.1"
34
+ spec.add_dependency "dry-configurable", "~> 1.3"
35
+ spec.add_dependency "dry-core", "~> 1.1"
36
+ spec.add_dependency "dry-inflector", "~> 1.1"
40
37
  end
@@ -60,10 +60,9 @@ module Dry
60
60
  #
61
61
  # @return [Object] component's class instance
62
62
  # @api public
63
- def instance(*args)
64
- options[:instance]&.call(self, *args) || loader.call(self, *args)
63
+ def instance(*args, **kwargs)
64
+ options[:instance]&.call(self, *args, **kwargs) || loader.call(self, *args, **kwargs)
65
65
  end
66
- ruby2_keywords(:instance) if respond_to?(:ruby2_keywords, true)
67
66
 
68
67
  # Returns the component's unique key
69
68
  #
@@ -76,13 +76,13 @@ module Dry
76
76
 
77
77
  def files(namespace)
78
78
  if namespace.path?
79
- Dir[File.join(full_path, namespace.path, "**", RB_GLOB)].sort
79
+ ::Dir[::File.join(full_path, namespace.path, "**", RB_GLOB)]
80
80
  else
81
81
  non_root_paths = config.namespaces.to_a.reject(&:root?).map(&:path)
82
82
 
83
- Dir[File.join(full_path, "**", RB_GLOB)].reject { |file_path|
83
+ ::Dir[::File.join(full_path, "**", RB_GLOB)].reject { |file_path|
84
84
  Pathname(file_path).relative_path_from(full_path).to_s.start_with?(*non_root_paths)
85
- }.sort
85
+ }
86
86
  end
87
87
  end
88
88
 
@@ -155,9 +155,9 @@ module Dry
155
155
  }
156
156
  end
157
157
 
158
- def method_missing(name, *args, &block)
158
+ def method_missing(name, ...)
159
159
  if config.respond_to?(name)
160
- config.public_send(name, *args, &block)
160
+ config.public_send(name, ...)
161
161
  else
162
162
  super
163
163
  end
@@ -7,7 +7,7 @@ module Dry
7
7
  module Config
8
8
  # @api public
9
9
  class ComponentDir
10
- include Dry::Configurable
10
+ include ::Dry::Configurable
11
11
 
12
12
  # @!group Settings
13
13
 
@@ -211,9 +211,9 @@ module Dry
211
211
 
212
212
  private
213
213
 
214
- def method_missing(name, *args, &block)
214
+ def method_missing(name, ...)
215
215
  if config.respond_to?(name)
216
- config.public_send(name, *args, &block)
216
+ config.public_send(name, ...)
217
217
  else
218
218
  super
219
219
  end
@@ -110,7 +110,7 @@ module Dry
110
110
 
111
111
  # @api private
112
112
  def initialize_copy(source)
113
- @dirs = source.dirs.map { |path, dir| [path, dir.dup] }.to_h
113
+ @dirs = source.dirs.to_h { |path, dir| [path, dir.dup] }
114
114
  @defaults = source.defaults.dup
115
115
  end
116
116
 
@@ -221,8 +221,8 @@ module Dry
221
221
  # @yieldparam dir [ComponentDir] the yielded component dir
222
222
  #
223
223
  # @api public
224
- def each(&block)
225
- to_a.each(&block)
224
+ def each(&)
225
+ to_a.each(&)
226
226
  end
227
227
 
228
228
  protected
@@ -272,9 +272,9 @@ module Dry
272
272
  end
273
273
  end
274
274
 
275
- def method_missing(name, *args, &block)
275
+ def method_missing(name, ...)
276
276
  if defaults.respond_to?(name)
277
- defaults.public_send(name, *args, &block)
277
+ defaults.public_send(name, ...)
278
278
  else
279
279
  super
280
280
  end
@@ -187,8 +187,8 @@ module Dry
187
187
  # @yieldparam namespace [Namespace] the yielded namespace
188
188
  #
189
189
  # @api public
190
- def each(&block)
191
- to_a.each(&block)
190
+ def each(&)
191
+ to_a.each(&)
192
192
  end
193
193
  end
194
194
  end
@@ -103,8 +103,8 @@ module Dry
103
103
  # @see after
104
104
  #
105
105
  # @api public
106
- def configure(finalize_config: true, &block)
107
- super(&block)
106
+ def configure(finalize_config: true, &)
107
+ super(&)
108
108
  configured!(finalize_config: finalize_config)
109
109
  end
110
110
 
@@ -314,23 +314,23 @@ module Dry
314
314
  # @return [self] frozen container
315
315
  #
316
316
  # @api public
317
- def finalize!(freeze: true, &block)
317
+ def finalize!(freeze: true, eager_load: true, &)
318
318
  return self if finalized?
319
319
 
320
320
  configured!
321
321
 
322
- hooks[:before_finalize].each { |hook| instance_eval(&hook) }
323
- yield(self) if block
322
+ run_hooks(:finalize) do
323
+ yield(self) if block_given?
324
324
 
325
- providers.finalize!
326
- auto_registrar.finalize!
327
- manifest_registrar.finalize!
328
- importer.finalize!
325
+ [providers, auto_registrar, manifest_registrar, importer].each(&:finalize!)
329
326
 
330
- @__finalized__ = true
327
+ keys.each { resolve(_1) } if eager_load
328
+
329
+ @__finalized__ = true
330
+
331
+ self.freeze if freeze
332
+ end
331
333
 
332
- self.freeze if freeze
333
- hooks[:after_finalize].each { |hook| instance_eval(&hook) }
334
334
  self
335
335
  end
336
336
 
@@ -462,7 +462,7 @@ module Dry
462
462
  # @api public
463
463
  def require_from_root(*paths)
464
464
  paths.flat_map { |path|
465
- path.to_s.include?("*") ? ::Dir[root.join(path)].sort : root.join(path)
465
+ path.to_s.include?("*") ? ::Dir[root.join(path)] : root.join(path)
466
466
  }.each { |path|
467
467
  Kernel.require path.to_s
468
468
  }
@@ -622,8 +622,8 @@ module Dry
622
622
  load_local_component(component)
623
623
  elsif manifest_registrar.file_exists?(component)
624
624
  manifest_registrar.(component)
625
- elsif importer.namespace?(component.identifier.root_key)
626
- load_imported_component(component.identifier, namespace: component.identifier.root_key)
625
+ elsif importer.namespace?(component.root_key)
626
+ load_imported_component(component.identifier, namespace: component.root_key)
627
627
  elsif importer.namespace?(nil)
628
628
  load_imported_component(component.identifier, namespace: nil)
629
629
  end
@@ -659,6 +659,12 @@ module Dry
659
659
  end
660
660
  } || IndirectComponent.new(Identifier.new(key))
661
661
  end
662
+
663
+ def run_hooks(event)
664
+ hooks[:"before_#{event}"].each { instance_eval(&_1) }
665
+ yield
666
+ hooks[:"after_#{event}"].each { instance_eval(&_1) }
667
+ end
662
668
  end
663
669
 
664
670
  # Default hooks
@@ -125,7 +125,7 @@ module Dry
125
125
  end
126
126
  end
127
127
 
128
- super message.join("\n")
128
+ super(message.join("\n"))
129
129
  end
130
130
  end
131
131
  end
@@ -43,18 +43,17 @@ module Dry
43
43
  # @return [Object]
44
44
  #
45
45
  # @api public
46
- def call(component, *args)
46
+ def call(component, *args, **kwargs)
47
47
  require!(component)
48
48
 
49
49
  constant = self.constant(component)
50
50
 
51
51
  if singleton?(constant)
52
- constant.instance(*args)
52
+ constant.instance(*args, **kwargs)
53
53
  else
54
- constant.new(*args)
54
+ constant.new(*args, **kwargs)
55
55
  end
56
56
  end
57
- ruby2_keywords(:call) if respond_to?(:ruby2_keywords, true)
58
57
 
59
58
  # Returns the component's class constant
60
59
  #
@@ -26,7 +26,7 @@ module Dry
26
26
 
27
27
  # @api private
28
28
  def finalize!
29
- ::Dir[registrations_dir.join(RB_GLOB)].sort.each do |file|
29
+ ::Dir[registrations_dir.join(RB_GLOB)].each do |file|
30
30
  call(Identifier.new(File.basename(file, RB_EXT)))
31
31
  end
32
32
  end
@@ -38,7 +38,7 @@ module Dry
38
38
 
39
39
  # @api private
40
40
  def file_exists?(component)
41
- File.exist?(File.join(registrations_dir, "#{component.root_key}#{RB_EXT}"))
41
+ ::File.exist?(::File.join(registrations_dir, "#{component.root_key}#{RB_EXT}"))
42
42
  end
43
43
 
44
44
  private
@@ -6,10 +6,8 @@ module Dry
6
6
  module Bootsnap
7
7
  DEFAULT_OPTIONS = {
8
8
  load_path_cache: true,
9
- disable_trace: true,
10
9
  compile_cache_iseq: true,
11
- compile_cache_yaml: true,
12
- autoload_paths_cache: false
10
+ compile_cache_yaml: true
13
11
  }.freeze
14
12
 
15
13
  # @api private
@@ -32,12 +30,16 @@ module Dry
32
30
  def setup_bootsnap
33
31
  return unless bootsnap_available?
34
32
 
35
- ::Bootsnap.setup(config.bootsnap.merge(cache_dir: root.join("tmp/cache").to_s))
33
+ ::Bootsnap.setup(**config.bootsnap, cache_dir: root.join("tmp/cache").to_s)
36
34
  end
37
35
 
38
36
  # @api private
39
37
  def bootsnap_available?
40
- RUBY_ENGINE == "ruby" && RUBY_VERSION >= "2.3.0" && RUBY_VERSION < "3.1.0"
38
+ spec = Gem.loaded_specs["bootsnap"] or return false
39
+
40
+ RUBY_ENGINE == "ruby" &&
41
+ spec.match_platform(RUBY_PLATFORM) &&
42
+ spec.required_ruby_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
41
43
  end
42
44
  end
43
45
  end
@@ -20,7 +20,7 @@ module Dry
20
20
  target_class: klass
21
21
  )
22
22
 
23
- super(klass)
23
+ super
24
24
  end
25
25
  end
26
26
 
@@ -36,7 +36,7 @@ module Dry
36
36
  target_class: klass
37
37
  )
38
38
 
39
- super(klass)
39
+ super
40
40
  end
41
41
  end
42
42
 
@@ -51,7 +51,7 @@ module Dry
51
51
  target_class: klass
52
52
  )
53
53
 
54
- super(klass)
54
+ super
55
55
  end
56
56
  end
57
57
 
@@ -34,7 +34,7 @@ module Dry
34
34
  end
35
35
 
36
36
  # @api private
37
- def register(key, contents = nil, options = {}, &block)
37
+ def register(key, contents = nil, options = {}, &)
38
38
  super.tap do
39
39
  key = key.to_s
40
40
 
@@ -24,15 +24,15 @@ module Dry
24
24
  end
25
25
 
26
26
  # @api private
27
- def monitor(key, **options, &block)
27
+ def monitor(key, **options, &)
28
28
  notifications = self[:notifications]
29
29
 
30
30
  resolve(key).tap do |target|
31
31
  proxy = Proxy.for(target, **options, key: key)
32
32
 
33
- if block
33
+ if block_given?
34
34
  proxy.monitored_methods.each do |meth|
35
- notifications.subscribe(:monitoring, target: key, method: meth, &block)
35
+ notifications.subscribe(:monitoring, target: key, method: meth, &)
36
36
  end
37
37
  end
38
38
 
@@ -11,8 +11,8 @@ module Dry
11
11
  # @return [Plugins]
12
12
  #
13
13
  # @api public
14
- def self.register(name, plugin, &block)
15
- registry[name] = Plugin.new(name, plugin, &block)
14
+ def self.register(name, plugin, &)
15
+ registry[name] = Plugin.new(name, plugin, &)
16
16
  end
17
17
 
18
18
  # @api private
@@ -37,21 +37,21 @@ module Dry
37
37
  # @see Dry::System::Provider::SourceDSL
38
38
  #
39
39
  # @api private
40
- def for(name:, group: nil, superclass: nil, &block)
40
+ def for(name:, group: nil, superclass: nil, &)
41
41
  superclass ||= self
42
42
 
43
- Class.new(superclass) { |klass|
43
+ ::Class.new(superclass) { |klass|
44
44
  klass.source_name name
45
45
  klass.source_group group
46
46
 
47
47
  name_with_group = group ? "#{group}->#{name}" : name
48
- klass.instance_eval <<~RUBY, __FILE__, __LINE__ + 1
49
- def name
50
- "#{superclass.name}[#{name_with_group}]"
51
- end
48
+ klass.instance_eval(<<~RUBY, __FILE__, __LINE__ + 1)
49
+ def name # def name
50
+ "#{superclass.name}[#{name_with_group}]" # "CustomSource[custom]"
51
+ end # end
52
52
  RUBY
53
53
 
54
- SourceDSL.evaluate(klass, &block) if block
54
+ SourceDSL.evaluate(klass, &) if block_given?
55
55
  }
56
56
  end
57
57
 
@@ -125,12 +125,12 @@ module Dry
125
125
  def target = target_container
126
126
 
127
127
  # @api private
128
- def initialize(provider_container:, target_container:, &block)
128
+ def initialize(provider_container:, target_container:, &)
129
129
  super()
130
130
  @callbacks = {before: CALLBACK_MAP.dup, after: CALLBACK_MAP.dup}
131
131
  @provider_container = provider_container
132
132
  @target_container = target_container
133
- instance_exec(&block) if block
133
+ instance_exec(&) if block_given?
134
134
  end
135
135
 
136
136
  # Returns a string containing a human-readable representation of the provider.
@@ -263,7 +263,7 @@ module Dry
263
263
  end
264
264
 
265
265
  # @api private
266
- def method_missing(name, *args, &block)
266
+ def method_missing(name, *args, &)
267
267
  if container.key?(name)
268
268
  container[name]
269
269
  else
@@ -10,8 +10,8 @@ module Dry
10
10
  #
11
11
  # @api private
12
12
  class SourceDSL
13
- def self.evaluate(source_class, &block)
14
- new(source_class).instance_eval(&block)
13
+ def self.evaluate(source_class, &)
14
+ new(source_class).instance_eval(&)
15
15
  end
16
16
 
17
17
  attr_reader :source_class
@@ -24,23 +24,23 @@ module Dry
24
24
  source_class.setting(...)
25
25
  end
26
26
 
27
- def prepare(&block)
28
- source_class.define_method(:prepare, &block)
27
+ def prepare(&)
28
+ source_class.define_method(:prepare, &)
29
29
  end
30
30
 
31
- def start(&block)
32
- source_class.define_method(:start, &block)
31
+ def start(&)
32
+ source_class.define_method(:start, &)
33
33
  end
34
34
 
35
- def stop(&block)
36
- source_class.define_method(:stop, &block)
35
+ def stop(&)
36
+ source_class.define_method(:stop, &)
37
37
  end
38
38
 
39
39
  private
40
40
 
41
- def method_missing(name, *args, &block)
41
+ def method_missing(name, ...)
42
42
  if source_class.respond_to?(name)
43
- source_class.public_send(name, *args, &block)
43
+ source_class.public_send(name, ...)
44
44
  else
45
45
  super
46
46
  end
@@ -127,8 +127,8 @@ module Dry
127
127
  attr_reader :source
128
128
 
129
129
  # @api private
130
- # rubocop:disable Layout/LineLength, Style/KeywordParametersOrder
131
- def initialize(name:, namespace: nil, target_container:, source_class:, source_options: {}, &block)
130
+ # rubocop:disable Style/KeywordParametersOrder
131
+ def initialize(name:, namespace: nil, target_container:, source_class:, source_options: {}, &)
132
132
  @name = name
133
133
  @namespace = namespace
134
134
  @target_container = target_container
@@ -141,10 +141,10 @@ module Dry
141
141
  **source_options,
142
142
  provider_container: provider_container,
143
143
  target_container: target_container,
144
- &block
144
+ &
145
145
  )
146
146
  end
147
- # rubocop:enable Layout/LineLength, Style/KeywordParametersOrder
147
+ # rubocop:enable Style/KeywordParametersOrder
148
148
 
149
149
  # Runs the `prepare` lifecycle step.
150
150
  #
@@ -46,14 +46,14 @@ module Dry
46
46
 
47
47
  # @see Container.register_provider
48
48
  # @api private
49
- def register_provider(name, from: nil, source: nil, if: true, **provider_options, &block)
49
+ def register_provider(name, from: nil, source: nil, if: true, **provider_options, &)
50
50
  raise ProviderAlreadyRegisteredError, name if providers.key?(name)
51
51
 
52
52
  if from && source.is_a?(Class)
53
53
  raise ArgumentError, "You must supply a block when using a provider source"
54
54
  end
55
55
 
56
- if block && source.is_a?(Class)
56
+ if block_given? && source.is_a?(Class)
57
57
  raise ArgumentError, "You must supply only a `source:` option or a block, not both"
58
58
  end
59
59
 
@@ -66,14 +66,14 @@ module Dry
66
66
  source: source || name,
67
67
  group: from,
68
68
  options: provider_options,
69
- &block
69
+ &
70
70
  )
71
71
  else
72
72
  build_provider(
73
73
  name,
74
74
  source: source,
75
75
  options: provider_options,
76
- &block
76
+ &
77
77
  )
78
78
  end
79
79
 
@@ -126,10 +126,10 @@ module Dry
126
126
  # @api public
127
127
  def provider_files
128
128
  @provider_files ||= provider_paths.each_with_object([[], []]) { |path, (provider_files, loaded)| # rubocop:disable Layout/LineLength
129
- files = Dir["#{path}/#{RB_GLOB}"].sort
129
+ files = ::Dir["#{path}/#{RB_GLOB}"]
130
130
 
131
131
  files.each do |file|
132
- basename = File.basename(file)
132
+ basename = ::File.basename(file)
133
133
 
134
134
  unless loaded.include?(basename)
135
135
  provider_files << Pathname(file)
@@ -213,11 +213,11 @@ module Dry
213
213
  }
214
214
  end
215
215
 
216
- def build_provider(name, options:, source: nil, &block)
216
+ def build_provider(name, options:, source: nil, &)
217
217
  source_class = source || Provider::Source.for(
218
218
  name: name,
219
219
  superclass: provider_source_class,
220
- &block
220
+ &
221
221
  )
222
222
 
223
223
  source_options =
@@ -236,7 +236,7 @@ module Dry
236
236
  )
237
237
  end
238
238
 
239
- def build_provider_from_source(name, source:, group:, options:, &block)
239
+ def build_provider_from_source(name, source:, group:, options:, &)
240
240
  provider_source = System.provider_sources.resolve(name: source, group: group)
241
241
 
242
242
  source_options =
@@ -253,7 +253,7 @@ module Dry
253
253
  target_container: target_container,
254
254
  source_class: provider_source.source,
255
255
  source_options: source_options,
256
- &block
256
+ &
257
257
  )
258
258
  end
259
259
 
@@ -24,7 +24,7 @@ module Dry
24
24
  end
25
25
 
26
26
  def load_sources(path)
27
- Dir[File.join(path, "**/#{RB_GLOB}")].sort.each do |file|
27
+ ::Dir[::File.join(path, "**/#{RB_GLOB}")].each do |file|
28
28
  require file
29
29
  end
30
30
  end
@@ -36,11 +36,11 @@ module Dry
36
36
  )
37
37
  end
38
38
 
39
- def register_from_block(name:, group:, provider_options:, &block)
39
+ def register_from_block(name:, group:, provider_options:, &)
40
40
  register(
41
41
  name: name,
42
42
  group: group,
43
- source: Provider::Source.for(name: name, group: group, &block),
43
+ source: Provider::Source.for(name: name, group: group, &),
44
44
  provider_options: provider_options
45
45
  )
46
46
  end
@@ -55,9 +55,9 @@ module Dry
55
55
 
56
56
  private
57
57
 
58
- def method_missing(name, *args, &block)
58
+ def method_missing(name, ...)
59
59
  if config.respond_to?(name)
60
- config.public_send(name, *args, &block)
60
+ config.public_send(name, ...)
61
61
  else
62
62
  super
63
63
  end
@@ -11,8 +11,8 @@ module Dry
11
11
  # of the container
12
12
  #
13
13
  # @api private
14
- def finalize!(**, &block)
15
- super(freeze: false, &block)
14
+ def finalize!(**, &)
15
+ super(freeze: false, &)
16
16
  end
17
17
  end
18
18
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module System
5
- VERSION = "1.1.1"
5
+ VERSION = "1.2.0"
6
6
  end
7
7
  end
data/lib/dry/system.rb CHANGED
@@ -30,8 +30,8 @@ module Dry
30
30
  # Registers a provider source, which can be used as the basis for other providers
31
31
  #
32
32
  # @api public
33
- def self.register_provider_source(name, group:, source: nil, provider_options: {}, &block)
34
- if source && block
33
+ def self.register_provider_source(name, group:, source: nil, provider_options: {}, &)
34
+ if source && block_given?
35
35
  raise ArgumentError, "You must supply only a `source:` option or a block, not both"
36
36
  end
37
37
 
@@ -47,7 +47,7 @@ module Dry
47
47
  name: name,
48
48
  group: group,
49
49
  provider_options: provider_options,
50
- &block
50
+ &
51
51
  )
52
52
  end
53
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-system
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-03 00:00:00.000000000 Z
11
+ date: 2025-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-auto_inject
@@ -16,98 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dry-configurable
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: '1.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dry-core
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.0'
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: dry-inflector
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
68
+ version: '1.1'
111
69
  description: Organize your code into reusable components
112
70
  email:
113
71
  - piotr.solnica@gmail.com
@@ -169,7 +127,8 @@ metadata:
169
127
  changelog_uri: https://github.com/dry-rb/dry-system/blob/main/CHANGELOG.md
170
128
  source_code_uri: https://github.com/dry-rb/dry-system
171
129
  bug_tracker_uri: https://github.com/dry-rb/dry-system/issues
172
- post_install_message:
130
+ rubygems_mfa_required: 'true'
131
+ post_install_message:
173
132
  rdoc_options: []
174
133
  require_paths:
175
134
  - lib
@@ -177,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
136
  requirements:
178
137
  - - ">="
179
138
  - !ruby/object:Gem::Version
180
- version: '3.0'
139
+ version: '3.1'
181
140
  required_rubygems_version: !ruby/object:Gem::Requirement
182
141
  requirements:
183
142
  - - ">="
@@ -185,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
144
  version: '0'
186
145
  requirements: []
187
146
  rubygems_version: 3.3.27
188
- signing_key:
147
+ signing_key:
189
148
  specification_version: 4
190
149
  summary: Organize your code into reusable components
191
150
  test_files: []