dry-system 0.27.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57c6404ea452b7f7a1d698c6ea823c91f477a9e4373a60a01093d17ed9510c79
4
- data.tar.gz: 2c38004c1a8e4a478ea3da73ad500085f1cd9830630bdd0113f2f5842f422015
3
+ metadata.gz: 8e37312a98176f2aebe7e735f1832014009d64a7e26b8e94eb43de110fe1d35d
4
+ data.tar.gz: beed65b065a2ec7b5046530daf0ce4f893536733c102eab713f439773c2062fe
5
5
  SHA512:
6
- metadata.gz: 9fbe5fd3365f6f2b235c5320b69619839c35ee3ffbf673b8de4b81353db48be179ae7ed1175fe9fe014834ce15702c9da3732be4707ccca1a40ba9c6fd27cc3c
7
- data.tar.gz: '0837a36fd22fdcdbd6863ad2933ab6fa927d5355c5f34e9ea81a08c02866ffd11c55464fa0d696dbdfa809bc38b24aa16efd7a858bb80338d34de1d8250c9e78'
6
+ metadata.gz: 6cf0b79c907bca6fe6cdb5deb7a1f3892639adc88f0f53729140d0b9d7ee0428bfeb2b1b35ab0d135950adc1bcc49f8461f24fd751e9db147f1618a1c512e567
7
+ data.tar.gz: 1ba240c376f38215bc3eb83f165e1735c4d7339312a30eee3f8ef0e0aed0b5d9ee03d0bcbbf5791448479db9d33d5d607cc1871bdfeda80827e04cade43fa82a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  <!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
2
2
 
3
+ ## 1.0.0 2022-11-18
4
+
5
+
6
+ ### Fixed
7
+
8
+ - Only use DidYouMean-integrated Error for Component loading failure (via #261) (@cllns + @solnic)
9
+
10
+ ### Changed
11
+
12
+ - This version uses dry-core 1.0 and dry-configurable 1.0 (@solnic + @flash-gordon)
13
+ - Raise error on import after finalize (via #254) (@timriley + @tak1n)
14
+ - Validate settings even if loader does not set value (via #246) (@oeoeaio)
15
+ - Remove all deprecated functionality and deprecation messages (via #255) (@timriley)
16
+ - Use main dry/monitor entrypoint for autoloading (via #257) (@timriley)
17
+ - Use dry-configurable 1.0 (via 43c79095ccf54c6251e825ae20c97a9415e78209) (@flash-gordon)
18
+ - Use dry-core 1.0 (via 3d0cf95aef120601e67f3e8fbbf16d004017d376) (@flash-gordon)
19
+ - Remove dry-container dependency and update to use `Dry::Core::Container` (via 2b76554e5925fc92614627d5c1e0a9177cecf12f) (@solnic)
20
+
21
+ [Compare v0.27.2...v1.0.0](https://github.com/dry-rb/dry-system/compare/v0.27.2...v1.0.0)
22
+
23
+ ## 0.27.2 2022-10-17
24
+
25
+
26
+ ### Fixed
27
+
28
+ - Removed remaining manual require left-overs (@solnic)
29
+
30
+
31
+ [Compare v0.27.1...v0.27.2](https://github.com/dry-rb/dry-system/compare/v0.27.1...v0.27.2)
32
+
3
33
  ## 0.27.1 2022-10-15
4
34
 
5
35
 
data/dry-system.gemspec CHANGED
@@ -29,12 +29,10 @@ Gem::Specification.new do |spec|
29
29
  spec.required_ruby_version = ">= 2.7.0"
30
30
 
31
31
  # to update dependencies edit project.yml
32
- spec.add_runtime_dependency "zeitwerk", "~> 2.6"
33
- spec.add_runtime_dependency "dry-auto_inject", ">= 0.4.0"
34
- spec.add_runtime_dependency "dry-configurable", "~> 0.16", ">= 0.16.0"
35
- spec.add_runtime_dependency "dry-container", "~> 0.10", ">= 0.10.0"
36
- spec.add_runtime_dependency "dry-core", "~> 0.9", ">= 0.9.0"
37
- spec.add_runtime_dependency "dry-inflector", "~> 0.1", ">= 0.1.2"
32
+ spec.add_runtime_dependency "dry-auto_inject", "~> 1.0.0.rc1", "< 2"
33
+ spec.add_runtime_dependency "dry-configurable", "~> 1.0", "< 2"
34
+ spec.add_runtime_dependency "dry-core", "~> 1.0", "< 2"
35
+ spec.add_runtime_dependency "dry-inflector", "~> 1.0", "< 2"
38
36
 
39
37
  spec.add_development_dependency "bundler"
40
38
  spec.add_development_dependency "rake"
@@ -190,40 +190,6 @@ module Dry
190
190
  # @api public
191
191
  setting :add_to_load_path, default: true
192
192
 
193
- # @api public
194
- def default_namespace=(namespace)
195
- Dry::Core::Deprecations.announce(
196
- "Dry::System::Config::ComponentDir#default_namespace=",
197
- "Add a namespace instead: `dir.namespaces.add #{namespace.to_s.inspect}, key: nil`",
198
- tag: "dry-system",
199
- uplevel: 1
200
- )
201
-
202
- # We don't have the configured separator here, so the best we can do is guess
203
- # that it's a dot
204
- namespace_path = namespace.gsub(".", PATH_SEPARATOR)
205
-
206
- return if namespaces.namespaces[namespace_path]
207
-
208
- namespaces.add namespace_path, key: nil
209
- end
210
-
211
- # @api public
212
- def default_namespace
213
- Dry::Core::Deprecations.announce(
214
- "Dry::System::Config::ComponentDir#default_namespace",
215
- "Use namespaces instead, e.g. `dir.namespaces`",
216
- tag: "dry-system",
217
- uplevel: 1
218
- )
219
-
220
- ns_path = namespaces.to_a.reject(&:root?).first&.path
221
-
222
- # We don't have the configured separator here, so the best we can do is guess
223
- # that it's a dot
224
- ns_path&.gsub(PATH_SEPARATOR, ".")
225
- end
226
-
227
193
  # @!endgroup
228
194
 
229
195
  # Returns the component dir path, relative to the configured container root
@@ -44,19 +44,7 @@ module Dry
44
44
  # @return [Namespace, nil] the root namespace, if configured
45
45
  #
46
46
  # @api public
47
- def root(**options)
48
- if options.any?
49
- Dry::Core::Deprecations.announce(
50
- "Dry::System::Config::Namespaces#root (with arguments)",
51
- "Use `#add_root(key: nil, const: nil)` instead",
52
- tag: "dry-system",
53
- uplevel: 1
54
- )
55
-
56
- add_root(**options)
57
- return
58
- end
59
-
47
+ def root
60
48
  namespaces[Namespace::ROOT_PATH]
61
49
  end
62
50
 
@@ -4,7 +4,6 @@ require "pathname"
4
4
 
5
5
  require "dry/configurable"
6
6
  require "dry/auto_inject"
7
- require "dry/container"
8
7
  require "dry/inflector"
9
8
 
10
9
  module Dry
@@ -53,13 +52,12 @@ module Dry
53
52
  #
54
53
  # @api public
55
54
  class Container
56
- extend Dry::Container::Mixin
55
+ extend Dry::Core::Container::Mixin
57
56
  extend Dry::System::Plugins
58
57
 
59
58
  setting :name
60
59
  setting :root, default: Pathname.pwd.freeze, constructor: ->(path) { Pathname(path) }
61
60
  setting :provider_dirs, default: ["system/providers"]
62
- setting :bootable_dirs # Deprecated for provider_dirs, see .provider_paths below
63
61
  setting :registrations_dir, default: "system/registrations"
64
62
  setting :component_dirs, default: Config::ComponentDirs.new, cloneable: true
65
63
  setting :exports, reader: true
@@ -73,8 +71,6 @@ module Dry
73
71
  config.namespace_separator = KEY_SEPARATOR
74
72
 
75
73
  class << self
76
- extend Dry::Core::Deprecations["Dry::System::Container"]
77
-
78
74
  # @!method config
79
75
  # Returns the configuration for the container
80
76
  #
@@ -152,46 +148,35 @@ module Dry
152
148
  #
153
149
  # @example
154
150
  # # system/container.rb
151
+ # require "dry/system/container"
152
+ # require "logger"
153
+ #
155
154
  # class Core < Dry::System::Container
156
- # configure do |config|
157
- # config.root = Pathname("/path/to/app")
158
- # config.auto_register = %w(lib/apis lib/core)
159
- # end
155
+ # register("logger", Logger.new($stdout))
160
156
  # end
161
157
  #
162
158
  # # apps/my_app/system/container.rb
163
159
  # require 'system/container'
164
160
  #
165
161
  # class MyApp < Dry::System::Container
166
- # configure do |config|
167
- # config.root = Pathname("/path/to/app")
168
- # config.auto_register = %w(lib/apis lib/core)
169
- # end
170
- #
171
- # import core: Core
162
+ # import(from: Core, as: :core)
172
163
  # end
173
164
  #
174
- # @param other [Hash, Dry::Container::Namespace]
165
+ # MyApp.import(keys: ["logger"], from: Core, as: :core2)
166
+ #
167
+ # MyApp["core.logger"].info("Test")
168
+ # MyApp["core2.logger"].info("Test2")
169
+ #
170
+ # @param keys [Array<String>] Keys for the components to import
171
+ # @param from [Class] The container to import from
172
+ # @param as [Symbol] Namespace to use for the components of the imported container
173
+ #
174
+ # @raise [Dry::System::ContainerAlreadyFinalizedError] if the container has already
175
+ # been finalized
175
176
  #
176
177
  # @api public
177
- def import(keys: nil, from: Undefined, as: Undefined, **deprecated_import_hash)
178
- if deprecated_import_hash.any?
179
- Dry::Core::Deprecations.announce(
180
- "Dry::System::Container.import with {namespace => container} hash",
181
- "Use Dry::System::Container.import(from: container, as: namespace) instead",
182
- tag: "dry-system",
183
- uplevel: 1
184
- )
185
-
186
- deprecated_import_hash.each do |namespace, container|
187
- importer.register(container: container, namespace: namespace)
188
- end
189
- return self
190
- elsif from == Undefined || as == Undefined
191
- # These keyword arguments can become properly required in the params list once
192
- # we remove the deprecation shim above
193
- raise ArgumentError, "required keyword arguments: :from, :as"
194
- end
178
+ def import(from:, as:, keys: nil)
179
+ raise Dry::System::ContainerAlreadyFinalizedError if finalized?
195
180
 
196
181
  importer.register(container: from, namespace: as, keys: keys)
197
182
 
@@ -291,26 +276,6 @@ module Dry
291
276
 
292
277
  # rubocop:enable Layout/LineLength
293
278
 
294
- # @see .register_provider
295
- # @api public
296
- def boot(name, **opts, &block)
297
- Dry::Core::Deprecations.announce(
298
- "Dry::System::Container.boot",
299
- "Use `Dry::System::Container.register_provider` instead",
300
- tag: "dry-system",
301
- uplevel: 1
302
- )
303
-
304
- register_provider(
305
- name,
306
- namespace: opts[:namespace],
307
- from: opts[:from],
308
- source: opts[:key],
309
- &block
310
- )
311
- end
312
- deprecate :finalize, :boot
313
-
314
279
  # Return if a container was finalized
315
280
  #
316
281
  # @return [TrueClass, FalseClass]
@@ -403,7 +368,6 @@ module Dry
403
368
  providers.prepare(name)
404
369
  self
405
370
  end
406
- deprecate :init, :prepare
407
371
 
408
372
  # Stop a specific component but calls only `stop` lifecycle trigger
409
373
  #
@@ -563,7 +527,6 @@ module Dry
563
527
  def providers
564
528
  @providers ||= config.provider_registrar.new(self)
565
529
  end
566
- deprecate :booter, :providers
567
530
 
568
531
  # @api private
569
532
  def auto_registrar
@@ -2,7 +2,10 @@
2
2
 
3
3
  module Dry
4
4
  module System
5
- extend Dry::Core::Deprecations["dry-system"]
5
+ # Error raised when import is called on an already finalized container
6
+ #
7
+ # @api public
8
+ ContainerAlreadyFinalizedError = Class.new(StandardError)
6
9
 
7
10
  # Error raised when a component dir is added to configuration more than once
8
11
  #
@@ -43,8 +46,6 @@ module Dry
43
46
  super("Provider #{provider_name.inspect} has already been registered")
44
47
  end
45
48
  end
46
- DuplicatedComponentKeyError = ProviderAlreadyRegisteredError
47
- deprecate_constant :DuplicatedComponentKeyError
48
49
 
49
50
  # Error raised when a named provider could not be found
50
51
  #
@@ -54,8 +55,6 @@ module Dry
54
55
  super("Provider #{name.inspect} not found")
55
56
  end
56
57
  end
57
- InvalidComponentError = ProviderNotFoundError
58
- deprecate_constant :InvalidComponentError
59
58
 
60
59
  # Error raised when a named provider source could not be found
61
60
  #
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "dry/container"
4
3
  require "dry/system/constants"
5
4
 
6
5
  module Dry
@@ -106,7 +105,7 @@ module Dry
106
105
  end
107
106
 
108
107
  def build_merge_container(other, keys)
109
- keys.each_with_object(Dry::Container.new) { |key, ic|
108
+ keys.each_with_object(Core::Container.new) { |key, ic|
110
109
  next unless other.key?(key)
111
110
 
112
111
  # Access the other container's items directly so that we can preserve all their
@@ -66,7 +66,12 @@ module Dry
66
66
  const_name = inflector.camelize(component.const_path)
67
67
  inflector.constantize(const_name)
68
68
  rescue NameError => e
69
- raise ComponentNotLoadableError.new(component, e)
69
+ # Ensure it's this component's constant, not any other NameError within the component
70
+ if e.message =~ /#{const_name}( |\n)/
71
+ raise ComponentNotLoadableError.new(component, e)
72
+ else
73
+ raise e
74
+ end
70
75
  end
71
76
 
72
77
  private
@@ -6,7 +6,7 @@ module Dry
6
6
  module DependencyGraph
7
7
  # @api private
8
8
  class Strategies
9
- extend Dry::Container::Mixin
9
+ extend Core::Container::Mixin
10
10
 
11
11
  # @api private
12
12
  class Kwargs < Dry::AutoInject::Strategies::Kwargs
@@ -12,7 +12,7 @@ module Dry
12
12
 
13
13
  # @api private
14
14
  def self.dependencies
15
- {"dry-monitor": "dry/monitor/notifications"}
15
+ {"dry-monitor": "dry/monitor"}
16
16
  end
17
17
 
18
18
  # @api private
@@ -37,11 +37,11 @@ module Dry
37
37
  # @see Dry::System::Provider::SourceDSL
38
38
  #
39
39
  # @api private
40
- def for(name:, group: nil, target_container:, &block) # rubocop:disable Style/KeywordParametersOrder
40
+ def for(name:, group: nil, &block)
41
41
  Class.new(self) { |klass|
42
42
  klass.source_name name
43
43
  klass.source_group group
44
- SourceDSL.evaluate(klass, target_container, &block) if block
44
+ SourceDSL.evaluate(klass, &block) if block
45
45
  }
46
46
  end
47
47
 
@@ -183,21 +183,6 @@ module Dry
183
183
  # @api public
184
184
  def stop; end
185
185
 
186
- def use(*provider_names)
187
- Dry::Core::Deprecations.announce(
188
- "Dry::System::Provider#use",
189
- "Use `target_container.start` instead, e.g. `target_container.start(:another_provider)`", # rubocop:disable Layout/LineLength
190
- tag: "dry-system",
191
- uplevel: 1
192
- )
193
-
194
- provider_names.each do |name|
195
- target_container.start(name)
196
- end
197
-
198
- self
199
- end
200
-
201
186
  # Registers a "before" callback for the given lifecycle step.
202
187
  #
203
188
  # The given block will be run before the lifecycle step method is run. The block
@@ -212,17 +197,6 @@ module Dry
212
197
  #
213
198
  # @api public
214
199
  def before(step_name, &block)
215
- if step_name.to_sym == :init
216
- Dry::Core::Deprecations.announce(
217
- "Dry::System::Provider before(:init) callback",
218
- "Use `before(:prepare)` callback instead",
219
- tag: "dry-system",
220
- uplevel: 1
221
- )
222
-
223
- step_name = :prepare
224
- end
225
-
226
200
  callbacks[:before][step_name] << block
227
201
  self
228
202
  end
@@ -241,17 +215,6 @@ module Dry
241
215
  #
242
216
  # @api public
243
217
  def after(step_name, &block)
244
- if step_name.to_sym == :init
245
- Dry::Core::Deprecations.announce(
246
- "Dry::System::Provider after(:init) callback",
247
- "Use `after(:prepare)` callback instead",
248
- tag: "dry-system",
249
- uplevel: 1
250
- )
251
-
252
- step_name = :prepare
253
- end
254
-
255
218
  callbacks[:after][step_name] << block
256
219
  self
257
220
  end
@@ -259,18 +222,7 @@ module Dry
259
222
  # @api private
260
223
  def run_callback(hook, step)
261
224
  callbacks[hook][step].each do |callback|
262
- if callback.parameters.any?
263
- Dry::Core::Deprecations.announce(
264
- "Dry::System::Provider::Source.before and .after callbacks with single block parameter", # rubocop:disable Layout/LineLength
265
- "Use `provider_container` (or `container` for short) inside your block instead",
266
- tag: "dry-system",
267
- uplevel: 1
268
- )
269
-
270
- instance_exec(provider_container, &callback)
271
- else
272
- instance_eval(&callback)
273
- end
225
+ instance_eval(&callback)
274
226
  end
275
227
  end
276
228
 
@@ -10,19 +10,8 @@ module Dry
10
10
  #
11
11
  # @api private
12
12
  class SourceDSL
13
- extend Dry::Core::Deprecations["Dry::System::Provider::SourceDSL"]
14
-
15
- def self.evaluate(source_class, target_container, &block)
16
- if block.parameters.any?
17
- Dry::Core::Deprecations.announce(
18
- "Dry::System.register_provider with single block parameter",
19
- "Use `target_container` (or `target` for short) inside your block instead",
20
- tag: "dry-system"
21
- )
22
- new(source_class).instance_exec(target_container, &block)
23
- else
24
- new(source_class).instance_eval(&block)
25
- end
13
+ def self.evaluate(source_class, &block)
14
+ new(source_class).instance_eval(&block)
26
15
  end
27
16
 
28
17
  attr_reader :source_class
@@ -35,35 +24,9 @@ module Dry
35
24
  source_class.setting(...)
36
25
  end
37
26
 
38
- # rubocop:disable Layout/LineLength
39
-
40
- def settings(&block)
41
- Dry::Core::Deprecations.announce(
42
- "Dry::System.register_provider with nested settings block",
43
- "Use individual top-level `setting` declarations instead (see dry-configurable docs for details)",
44
- tag: "dry-system",
45
- uplevel: 1
46
- )
47
-
48
- DeprecatedSettingsDSL.new(self).instance_eval(&block)
49
- end
50
-
51
- # rubocop:enable Layout/LineLength
52
-
53
- class DeprecatedSettingsDSL
54
- def initialize(base_dsl)
55
- @base_dsl = base_dsl
56
- end
57
-
58
- def key(name, type)
59
- @base_dsl.setting(name, constructor: type)
60
- end
61
- end
62
-
63
27
  def prepare(&block)
64
28
  source_class.define_method(:prepare, &block)
65
29
  end
66
- deprecate :init, :prepare
67
30
 
68
31
  def start(&block)
69
32
  source_class.define_method(:start, &block)
@@ -90,7 +90,7 @@ module Dry
90
90
  # later marged into the target container after the `prepare` and `start` lifecycle
91
91
  # steps.
92
92
  #
93
- # @return [Dry::Container]
93
+ # @return [Dry::Core::Container]
94
94
  #
95
95
  # @api public
96
96
  attr_reader :provider_container
@@ -206,7 +206,7 @@ module Dry
206
206
 
207
207
  # @api private
208
208
  def build_provider_container
209
- container = Dry::Container.new
209
+ container = Core::Container.new
210
210
 
211
211
  case namespace
212
212
  when String, Symbol
@@ -15,8 +15,6 @@ module Dry
15
15
  #
16
16
  # @api private
17
17
  class ProviderRegistrar
18
- extend Dry::Core::Deprecations["Dry::System::Container"]
19
-
20
18
  # @api private
21
19
  attr_reader :providers
22
20
 
@@ -138,7 +136,6 @@ module Dry
138
136
  end
139
137
  }.first
140
138
  end
141
- deprecate :boot_files, :provider_files
142
139
 
143
140
  # @api private
144
141
  def finalize!
@@ -184,24 +181,9 @@ module Dry
184
181
 
185
182
  private
186
183
 
187
- # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/LineLength
188
184
  # @api private
189
185
  def provider_paths
190
186
  provider_dirs = container.config.provider_dirs
191
- bootable_dirs = container.config.bootable_dirs || ["system/boot"]
192
-
193
- if container.config.provider_dirs == ["system/providers"] && \
194
- provider_dirs.none? { |d| container.root.join(d).exist? } && \
195
- bootable_dirs.any? { |d| container.root.join(d).exist? }
196
- Dry::Core::Deprecations.announce(
197
- "Dry::System::Container.config.bootable_dirs (defaulting to 'system/boot')",
198
- "Use `Dry::System::Container.config.provider_dirs` (defaulting to 'system/providers') instead",
199
- tag: "dry-system",
200
- uplevel: 2
201
- )
202
-
203
- provider_dirs = bootable_dirs
204
- end
205
187
 
206
188
  provider_dirs.map { |dir|
207
189
  dir = Pathname(dir)
@@ -213,14 +195,9 @@ module Dry
213
195
  end
214
196
  }
215
197
  end
216
- # rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/LineLength
217
198
 
218
199
  def build_provider(name, namespace:, source: nil, &block)
219
- source_class = source || Provider::Source.for(
220
- name: name,
221
- target_container: container,
222
- &block
223
- )
200
+ source_class = source || Provider::Source.for(name: name, &block)
224
201
 
225
202
  Provider.new(
226
203
  name: name,
@@ -22,31 +22,19 @@ module Dry
22
22
  sources[key(name, group)] = source
23
23
  end
24
24
 
25
- def register_from_block(name:, group:, target_container:, &block)
25
+ def register_from_block(name:, group:, &block)
26
26
  register(
27
27
  name: name,
28
28
  group: group,
29
29
  source: Provider::Source.for(
30
30
  name: name,
31
31
  group: group,
32
- target_container: target_container,
33
32
  &block
34
33
  )
35
34
  )
36
35
  end
37
36
 
38
37
  def resolve(name:, group:)
39
- if group == :system
40
- Dry::Core::Deprecations.announce(
41
- "Providers using `from: :system`",
42
- "Use `from: :dry_system` instead",
43
- tag: "dry-system",
44
- uplevel: 1
45
- )
46
-
47
- group = :dry_system
48
- end
49
-
50
38
  sources[key(name, group)].tap { |source|
51
39
  unless source
52
40
  raise ProviderSourceNotFoundError.new(
@@ -33,13 +33,17 @@ module Dry
33
33
  new.tap do |settings_obj|
34
34
  errors = {}
35
35
 
36
- settings.to_a.each do |setting_name|
37
- value = loader[setting_name.to_s.upcase]
36
+ settings.to_a.each do |setting|
37
+ value = loader[setting.name.to_s.upcase]
38
38
 
39
39
  begin
40
- settings_obj.config.public_send(:"#{setting_name}=", value) if value
40
+ if value
41
+ settings_obj.config.public_send(:"#{setting.name}=", value)
42
+ else
43
+ settings_obj.config[setting.name]
44
+ end
41
45
  rescue => e # rubocop:disable Style/RescueStandardError
42
- errors[setting_name] = e
46
+ errors[setting.name] = e
43
47
  end
44
48
  end
45
49
 
@@ -47,19 +51,6 @@ module Dry
47
51
  end
48
52
  end
49
53
 
50
- # rubocop:disable Layout/LineLength
51
- def self.key(name, type)
52
- Dry::Core::Deprecations.announce(
53
- "Dry::System :settings provider source setting definition using `key`",
54
- "Use `setting` instead, with dry-configurable `setting` options, e.g. `setting :my_setting, default: \"hello\", constructor: Types::String.constrained(min_length: 3)`",
55
- tag: "dry-system",
56
- uplevel: 1
57
- )
58
-
59
- setting(name, constructor: type)
60
- end
61
- # rubocop:enable Layout/LineLength
62
-
63
54
  include Dry::Configurable
64
55
 
65
56
  private
@@ -26,12 +26,6 @@ module Dry
26
26
  require "dotenv"
27
27
  Dotenv.load(*dotenv_files(root, env)) if defined?(Dotenv)
28
28
  rescue LoadError
29
- Dry::Core::Deprecations.announce(
30
- "Dry::System :settings provider now requires dotenv to to load settings from .env files`", # rubocop:disable Layout/LineLength
31
- "Add `gem \"dotenv\"` to your application's `Gemfile`",
32
- tag: "dry-system",
33
- uplevel: 3
34
- )
35
29
  # Do nothing if dotenv is unavailable
36
30
  end
37
31
 
@@ -21,7 +21,7 @@ module Dry
21
21
  # requiring an app-specific types module for setting constructors)
22
22
  if block
23
23
  @settings_block = block
24
- elsif @settings_class
24
+ elsif defined? @settings_class
25
25
  @settings_class
26
26
  elsif @settings_block
27
27
  @settings_class = Class.new(Settings::Config, &@settings_block)
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "dry/container/stub"
3
+ require "dry/core/container/stub"
4
4
 
5
5
  module Dry
6
6
  module System
7
7
  class Container
8
8
  # @api private
9
9
  module Stubs
10
- def finalize!(freeze: true, &block)
10
+ # This overrides default finalize! just to disable automatic freezing
11
+ # of the container
12
+ #
13
+ # @api private
14
+ def finalize!(**, &block)
11
15
  super(freeze: false, &block)
12
16
  end
13
17
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module System
5
- VERSION = "0.27.2"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
data/lib/dry/system.rb CHANGED
@@ -27,17 +27,6 @@ module Dry
27
27
  provider_sources.load_sources(path)
28
28
  end
29
29
 
30
- def self.register_provider(_name, options)
31
- Dry::Core::Deprecations.announce(
32
- "Dry::System.register_provider",
33
- "Use `Dry::System.register_provider_sources` instead",
34
- tag: "dry-system",
35
- uplevel: 1
36
- )
37
-
38
- register_provider_sources(options.fetch(:path))
39
- end
40
-
41
30
  # Registers a provider source, which can be used as the basis for other providers
42
31
  #
43
32
  # @api public
@@ -49,26 +38,10 @@ module Dry
49
38
  if source
50
39
  provider_sources.register(name: name, group: group, source: source)
51
40
  else
52
- provider_sources.register_from_block(
53
- name: name,
54
- group: group,
55
- target_container: self,
56
- &block
57
- )
41
+ provider_sources.register_from_block(name: name, group: group, &block)
58
42
  end
59
43
  end
60
44
 
61
- def self.register_component(name, provider:, &block)
62
- Dry::Core::Deprecations.announce(
63
- "Dry::System.register_component",
64
- "Use `Dry::System.register_provider_source` instead",
65
- tag: "dry-system",
66
- uplevel: 1
67
- )
68
-
69
- register_provider_source(name, group: provider, &block)
70
- end
71
-
72
45
  # @api private
73
46
  def self.provider_sources
74
47
  @provider_sources ||= ProviderSourceRegistry.new
metadata CHANGED
@@ -1,123 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-system
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-17 00:00:00.000000000 Z
11
+ date: 2022-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: zeitwerk
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.6'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.6'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: dry-auto_inject
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.4.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 0.4.0
41
- - !ruby/object:Gem::Dependency
42
- name: dry-configurable
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - "~>"
46
18
  - !ruby/object:Gem::Version
47
- version: '0.16'
48
- - - ">="
19
+ version: 1.0.0.rc1
20
+ - - "<"
49
21
  - !ruby/object:Gem::Version
50
- version: 0.16.0
22
+ version: '2'
51
23
  type: :runtime
52
24
  prerelease: false
53
25
  version_requirements: !ruby/object:Gem::Requirement
54
26
  requirements:
55
27
  - - "~>"
56
28
  - !ruby/object:Gem::Version
57
- version: '0.16'
58
- - - ">="
29
+ version: 1.0.0.rc1
30
+ - - "<"
59
31
  - !ruby/object:Gem::Version
60
- version: 0.16.0
32
+ version: '2'
61
33
  - !ruby/object:Gem::Dependency
62
- name: dry-container
34
+ name: dry-configurable
63
35
  requirement: !ruby/object:Gem::Requirement
64
36
  requirements:
65
37
  - - "~>"
66
38
  - !ruby/object:Gem::Version
67
- version: '0.10'
68
- - - ">="
39
+ version: '1.0'
40
+ - - "<"
69
41
  - !ruby/object:Gem::Version
70
- version: 0.10.0
42
+ version: '2'
71
43
  type: :runtime
72
44
  prerelease: false
73
45
  version_requirements: !ruby/object:Gem::Requirement
74
46
  requirements:
75
47
  - - "~>"
76
48
  - !ruby/object:Gem::Version
77
- version: '0.10'
78
- - - ">="
49
+ version: '1.0'
50
+ - - "<"
79
51
  - !ruby/object:Gem::Version
80
- version: 0.10.0
52
+ version: '2'
81
53
  - !ruby/object:Gem::Dependency
82
54
  name: dry-core
83
55
  requirement: !ruby/object:Gem::Requirement
84
56
  requirements:
85
57
  - - "~>"
86
58
  - !ruby/object:Gem::Version
87
- version: '0.9'
88
- - - ">="
59
+ version: '1.0'
60
+ - - "<"
89
61
  - !ruby/object:Gem::Version
90
- version: 0.9.0
62
+ version: '2'
91
63
  type: :runtime
92
64
  prerelease: false
93
65
  version_requirements: !ruby/object:Gem::Requirement
94
66
  requirements:
95
67
  - - "~>"
96
68
  - !ruby/object:Gem::Version
97
- version: '0.9'
98
- - - ">="
69
+ version: '1.0'
70
+ - - "<"
99
71
  - !ruby/object:Gem::Version
100
- version: 0.9.0
72
+ version: '2'
101
73
  - !ruby/object:Gem::Dependency
102
74
  name: dry-inflector
103
75
  requirement: !ruby/object:Gem::Requirement
104
76
  requirements:
105
77
  - - "~>"
106
78
  - !ruby/object:Gem::Version
107
- version: '0.1'
108
- - - ">="
79
+ version: '1.0'
80
+ - - "<"
109
81
  - !ruby/object:Gem::Version
110
- version: 0.1.2
82
+ version: '2'
111
83
  type: :runtime
112
84
  prerelease: false
113
85
  version_requirements: !ruby/object:Gem::Requirement
114
86
  requirements:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
- version: '0.1'
118
- - - ">="
89
+ version: '1.0'
90
+ - - "<"
119
91
  - !ruby/object:Gem::Version
120
- version: 0.1.2
92
+ version: '2'
121
93
  - !ruby/object:Gem::Dependency
122
94
  name: bundler
123
95
  requirement: !ruby/object:Gem::Requirement
@@ -176,7 +148,6 @@ files:
176
148
  - lib/dry/system/auto_registrar.rb
177
149
  - lib/dry/system/component.rb
178
150
  - lib/dry/system/component_dir.rb
179
- - lib/dry/system/components.rb
180
151
  - lib/dry/system/config/component_dir.rb
181
152
  - lib/dry/system/config/component_dirs.rb
182
153
  - lib/dry/system/config/namespace.rb
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Dry::Core::Deprecations.announce(
4
- "require \"dry/system/components\"",
5
- "Use `require \"dry/system/provider_sources\"` instead",
6
- tag: "dry-system",
7
- uplevel: 1
8
- )
9
-
10
- require_relative "provider_sources"