dry-system 0.26.0 → 0.27.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/dry-system.gemspec +2 -1
- data/lib/dry/system/auto_registrar.rb +0 -1
- data/lib/dry/system/component.rb +1 -4
- data/lib/dry/system/component_dir.rb +0 -3
- data/lib/dry/system/components.rb +0 -2
- data/lib/dry/system/config/component_dir.rb +0 -4
- data/lib/dry/system/config/component_dirs.rb +0 -1
- data/lib/dry/system/config/namespace.rb +0 -1
- data/lib/dry/system/config/namespaces.rb +0 -3
- data/lib/dry/system/constants.rb +0 -2
- data/lib/dry/system/container.rb +0 -17
- data/lib/dry/system/errors.rb +0 -2
- data/lib/dry/system/identifier.rb +1 -2
- data/lib/dry/system/importer.rb +1 -1
- data/lib/dry/system/indirect_component.rb +0 -2
- data/lib/dry/system/loader/autoloading.rb +0 -2
- data/lib/dry/system/plugins/plugin.rb +61 -0
- data/lib/dry/system/plugins.rb +1 -57
- data/lib/dry/system/provider/source.rb +0 -3
- data/lib/dry/system/provider/source_dsl.rb +0 -2
- data/lib/dry/system/provider.rb +1 -3
- data/lib/dry/system/provider_registrar.rb +3 -5
- data/lib/dry/system/provider_source_registry.rb +1 -3
- data/lib/dry/system/provider_sources/settings/config.rb +0 -4
- data/lib/dry/system/provider_sources/settings/loader.rb +0 -3
- data/lib/dry/system/version.rb +1 -1
- data/lib/dry/system.rb +19 -2
- metadata +25 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 84621f047b9ae5be5233f099d1031bf5241c8694bd965884d161ce5f5b6ee079
|
|
4
|
+
data.tar.gz: be2f0f633dcbea09059608ed3dde19a0cb7d89b7d3f1b9e5484e780eb438f3d0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9b5fc46ed7af654f4abc07cf95815ccfac84a44ed7ea76cc20d4253092ca78f82aa6ab5d66769ccbbe2f94937e536fa90f8156b2fbabd83466e59a6bbda098eb
|
|
7
|
+
data.tar.gz: d727819c4894eff4b5b095b33c27da01952643c7fed843321bca02e6e622c519a200b6a2f71cfe137003ef42cecb36b17a460005f291793816af10e1ad7a6475
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
|
2
2
|
|
|
3
|
+
## 0.27.0 2022-10-15
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Changed
|
|
7
|
+
|
|
8
|
+
- Use zeitwerk for auto-loading dry-system (@flash-gordon + @solnic)
|
|
9
|
+
|
|
10
|
+
[Compare v0.26.0...v0.27.0](https://github.com/dry-rb/dry-system/compare/v0.26.0...v0.27.0)
|
|
11
|
+
|
|
3
12
|
## 0.26.0 2022-10-08
|
|
4
13
|
|
|
5
14
|
|
data/dry-system.gemspec
CHANGED
|
@@ -29,10 +29,11 @@ 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"
|
|
32
33
|
spec.add_runtime_dependency "dry-auto_inject", ">= 0.4.0"
|
|
33
34
|
spec.add_runtime_dependency "dry-configurable", "~> 0.16", ">= 0.16.0"
|
|
34
35
|
spec.add_runtime_dependency "dry-container", "~> 0.10", ">= 0.10.0"
|
|
35
|
-
spec.add_runtime_dependency "dry-core", "~> 0.
|
|
36
|
+
spec.add_runtime_dependency "dry-core", "~> 0.9", ">= 0.9.0"
|
|
36
37
|
spec.add_runtime_dependency "dry-inflector", "~> 0.1", ">= 0.1.2"
|
|
37
38
|
|
|
38
39
|
spec.add_development_dependency "bundler"
|
data/lib/dry/system/component.rb
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
3
|
+
require "pathname"
|
|
4
4
|
require "dry/inflector"
|
|
5
|
-
require "dry/system/loader"
|
|
6
5
|
require "dry/system/errors"
|
|
7
6
|
require "dry/system/constants"
|
|
8
|
-
require "pathname"
|
|
9
|
-
require_relative "identifier"
|
|
10
7
|
|
|
11
8
|
module Dry
|
|
12
9
|
module System
|
data/lib/dry/system/constants.rb
CHANGED
data/lib/dry/system/container.rb
CHANGED
|
@@ -5,25 +5,8 @@ require "pathname"
|
|
|
5
5
|
require "dry/configurable"
|
|
6
6
|
require "dry/auto_inject"
|
|
7
7
|
require "dry/container"
|
|
8
|
-
require "dry/core/deprecations"
|
|
9
8
|
require "dry/inflector"
|
|
10
9
|
|
|
11
|
-
require "dry/system/auto_registrar"
|
|
12
|
-
require "dry/system/component"
|
|
13
|
-
require "dry/system/constants"
|
|
14
|
-
require "dry/system/errors"
|
|
15
|
-
require "dry/system/identifier"
|
|
16
|
-
require "dry/system/importer"
|
|
17
|
-
require "dry/system/indirect_component"
|
|
18
|
-
require "dry/system/manifest_registrar"
|
|
19
|
-
require "dry/system/plugins"
|
|
20
|
-
require "dry/system/provider_registrar"
|
|
21
|
-
require "dry/system/provider"
|
|
22
|
-
require "dry/system/provider/source"
|
|
23
|
-
|
|
24
|
-
require_relative "component_dir"
|
|
25
|
-
require_relative "config/component_dirs"
|
|
26
|
-
|
|
27
10
|
module Dry
|
|
28
11
|
module System
|
|
29
12
|
# Abstract container class to inherit from
|
data/lib/dry/system/errors.rb
CHANGED
data/lib/dry/system/importer.rb
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dry
|
|
4
|
+
module System
|
|
5
|
+
module Plugins
|
|
6
|
+
# @api private
|
|
7
|
+
class Plugin
|
|
8
|
+
attr_reader :name
|
|
9
|
+
|
|
10
|
+
attr_reader :mod
|
|
11
|
+
|
|
12
|
+
attr_reader :block
|
|
13
|
+
|
|
14
|
+
# @api private
|
|
15
|
+
def initialize(name, mod, &block)
|
|
16
|
+
@name = name
|
|
17
|
+
@mod = mod
|
|
18
|
+
@block = block
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
def apply_to(system, **options)
|
|
23
|
+
system.extend(stateful? ? mod.new(**options) : mod)
|
|
24
|
+
system.instance_eval(&block) if block
|
|
25
|
+
system
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @api private
|
|
29
|
+
def load_dependencies(dependencies = mod_dependencies, gem = nil)
|
|
30
|
+
Array(dependencies).each do |dependency|
|
|
31
|
+
if dependency.is_a?(Array) || dependency.is_a?(Hash)
|
|
32
|
+
dependency.each { |value| load_dependencies(*Array(value).reverse) }
|
|
33
|
+
elsif !Plugins.loaded_dependencies.include?(dependency.to_s)
|
|
34
|
+
load_dependency(dependency, gem)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @api private
|
|
40
|
+
def load_dependency(dependency, gem)
|
|
41
|
+
Kernel.require dependency
|
|
42
|
+
Plugins.loaded_dependencies << dependency.to_s
|
|
43
|
+
rescue LoadError => e
|
|
44
|
+
raise PluginDependencyMissing.new(name, e.message, gem)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api private
|
|
48
|
+
def stateful?
|
|
49
|
+
mod < Module
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @api private
|
|
53
|
+
def mod_dependencies
|
|
54
|
+
return EMPTY_ARRAY unless mod.respond_to?(:dependencies)
|
|
55
|
+
|
|
56
|
+
mod.dependencies.is_a?(Array) ? mod.dependencies : [mod.dependencies]
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/dry/system/plugins.rb
CHANGED
|
@@ -1,64 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "dry/system/constants"
|
|
4
|
-
|
|
5
3
|
module Dry
|
|
6
4
|
module System
|
|
7
5
|
module Plugins
|
|
8
|
-
# @api private
|
|
9
|
-
class Plugin
|
|
10
|
-
attr_reader :name
|
|
11
|
-
|
|
12
|
-
attr_reader :mod
|
|
13
|
-
|
|
14
|
-
attr_reader :block
|
|
15
|
-
|
|
16
|
-
# @api private
|
|
17
|
-
def initialize(name, mod, &block)
|
|
18
|
-
@name = name
|
|
19
|
-
@mod = mod
|
|
20
|
-
@block = block
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# @api private
|
|
24
|
-
def apply_to(system, **options)
|
|
25
|
-
system.extend(stateful? ? mod.new(**options) : mod)
|
|
26
|
-
system.instance_eval(&block) if block
|
|
27
|
-
system
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# @api private
|
|
31
|
-
def load_dependencies(dependencies = mod_dependencies, gem = nil)
|
|
32
|
-
Array(dependencies).each do |dependency|
|
|
33
|
-
if dependency.is_a?(Array) || dependency.is_a?(Hash)
|
|
34
|
-
dependency.each { |value| load_dependencies(*Array(value).reverse) }
|
|
35
|
-
elsif !Plugins.loaded_dependencies.include?(dependency.to_s)
|
|
36
|
-
load_dependency(dependency, gem)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# @api private
|
|
42
|
-
def load_dependency(dependency, gem)
|
|
43
|
-
Kernel.require dependency
|
|
44
|
-
Plugins.loaded_dependencies << dependency.to_s
|
|
45
|
-
rescue LoadError => e
|
|
46
|
-
raise PluginDependencyMissing.new(name, e.message, gem)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# @api private
|
|
50
|
-
def stateful?
|
|
51
|
-
mod < Module
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @api private
|
|
55
|
-
def mod_dependencies
|
|
56
|
-
return EMPTY_ARRAY unless mod.respond_to?(:dependencies)
|
|
57
|
-
|
|
58
|
-
mod.dependencies.is_a?(Array) ? mod.dependencies : [mod.dependencies]
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
6
|
# Register a plugin
|
|
63
7
|
#
|
|
64
8
|
# @param [Symbol] name The name of a plugin
|
|
@@ -93,7 +37,7 @@ module Dry
|
|
|
93
37
|
def use(name, **options)
|
|
94
38
|
return self if enabled_plugins.include?(name)
|
|
95
39
|
|
|
96
|
-
raise PluginNotFoundError, name unless (plugin = Plugins.registry[name])
|
|
40
|
+
raise PluginNotFoundError, name unless (plugin = Dry::System::Plugins.registry[name])
|
|
97
41
|
|
|
98
42
|
plugin.load_dependencies
|
|
99
43
|
plugin.apply_to(self, **options)
|
data/lib/dry/system/provider.rb
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "dry/core/deprecations"
|
|
4
|
-
require "dry/system"
|
|
5
3
|
require "pathname"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
|
|
5
|
+
require "dry/system/errors"
|
|
6
|
+
require "dry/system/constants"
|
|
9
7
|
|
|
10
8
|
module Dry
|
|
11
9
|
module System
|
data/lib/dry/system/version.rb
CHANGED
data/lib/dry/system.rb
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
4
|
-
|
|
3
|
+
require "zeitwerk"
|
|
4
|
+
require "dry/core"
|
|
5
5
|
|
|
6
6
|
module Dry
|
|
7
7
|
module System
|
|
8
|
+
# @api private
|
|
9
|
+
def self.loader
|
|
10
|
+
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
|
11
|
+
root = File.expand_path("..", __dir__)
|
|
12
|
+
loader.tag = "dry-system"
|
|
13
|
+
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-system.rb")
|
|
14
|
+
loader.push_dir(root)
|
|
15
|
+
loader.ignore(
|
|
16
|
+
"#{root}/dry-system.rb",
|
|
17
|
+
"#{root}/dry/system/{constants,errors,stubs,version}.rb"
|
|
18
|
+
)
|
|
19
|
+
loader.inflector.inflect("dsl" => "DSL")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
8
23
|
# Registers the provider sources in the files under the given path
|
|
9
24
|
#
|
|
10
25
|
# @api public
|
|
@@ -58,5 +73,7 @@ module Dry
|
|
|
58
73
|
def self.provider_sources
|
|
59
74
|
@provider_sources ||= ProviderSourceRegistry.new
|
|
60
75
|
end
|
|
76
|
+
|
|
77
|
+
loader.setup
|
|
61
78
|
end
|
|
62
79
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-system
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.27.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: 2022-10-
|
|
11
|
+
date: 2022-10-15 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'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: dry-auto_inject
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,20 +84,20 @@ dependencies:
|
|
|
70
84
|
requirements:
|
|
71
85
|
- - "~>"
|
|
72
86
|
- !ruby/object:Gem::Version
|
|
73
|
-
version: '0.
|
|
87
|
+
version: '0.9'
|
|
74
88
|
- - ">="
|
|
75
89
|
- !ruby/object:Gem::Version
|
|
76
|
-
version:
|
|
90
|
+
version: 0.9.0
|
|
77
91
|
type: :runtime
|
|
78
92
|
prerelease: false
|
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
94
|
requirements:
|
|
81
95
|
- - "~>"
|
|
82
96
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: '0.
|
|
97
|
+
version: '0.9'
|
|
84
98
|
- - ">="
|
|
85
99
|
- !ruby/object:Gem::Version
|
|
86
|
-
version:
|
|
100
|
+
version: 0.9.0
|
|
87
101
|
- !ruby/object:Gem::Dependency
|
|
88
102
|
name: dry-inflector
|
|
89
103
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,6 +200,7 @@ files:
|
|
|
186
200
|
- lib/dry/system/plugins/monitoring.rb
|
|
187
201
|
- lib/dry/system/plugins/monitoring/proxy.rb
|
|
188
202
|
- lib/dry/system/plugins/notifications.rb
|
|
203
|
+
- lib/dry/system/plugins/plugin.rb
|
|
189
204
|
- lib/dry/system/plugins/zeitwerk.rb
|
|
190
205
|
- lib/dry/system/plugins/zeitwerk/compat_inflector.rb
|
|
191
206
|
- lib/dry/system/provider.rb
|
|
@@ -207,7 +222,7 @@ metadata:
|
|
|
207
222
|
changelog_uri: https://github.com/dry-rb/dry-system/blob/main/CHANGELOG.md
|
|
208
223
|
source_code_uri: https://github.com/dry-rb/dry-system
|
|
209
224
|
bug_tracker_uri: https://github.com/dry-rb/dry-system/issues
|
|
210
|
-
post_install_message:
|
|
225
|
+
post_install_message:
|
|
211
226
|
rdoc_options: []
|
|
212
227
|
require_paths:
|
|
213
228
|
- lib
|
|
@@ -222,8 +237,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
222
237
|
- !ruby/object:Gem::Version
|
|
223
238
|
version: '0'
|
|
224
239
|
requirements: []
|
|
225
|
-
rubygems_version: 3.
|
|
226
|
-
signing_key:
|
|
240
|
+
rubygems_version: 3.1.6
|
|
241
|
+
signing_key:
|
|
227
242
|
specification_version: 4
|
|
228
243
|
summary: Organize your code into reusable components
|
|
229
244
|
test_files: []
|