dry-auto_inject 1.0.0 → 1.1.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 +20 -0
- data/LICENSE +1 -1
- data/README.md +5 -12
- data/dry-auto_inject.gemspec +10 -12
- data/lib/dry/auto_inject/builder.rb +3 -7
- data/lib/dry/auto_inject/dependency_map.rb +6 -10
- data/lib/dry/auto_inject/injector.rb +4 -10
- data/lib/dry/auto_inject/method_parameters.rb +15 -18
- data/lib/dry/auto_inject/strategies/args.rb +11 -8
- data/lib/dry/auto_inject/strategies/hash.rb +8 -6
- data/lib/dry/auto_inject/strategies.rb +2 -2
- data/lib/dry/auto_inject/version.rb +1 -1
- data/lib/dry/auto_inject.rb +3 -3
- metadata +10 -57
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0fe35e3cc69af3c8553b31c5687b46e86a26a51371390ee7f23e31eff74292c1
|
|
4
|
+
data.tar.gz: 61eaf8236d91026dd0b510ce5e5ca8f5cb68e5b9bd54781d5fcbb981cbd0d663
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6e63f1dd733ffd29956d7a0d5d8e38137066ab6f84a625c68bb1d1953931863cac3bf775450ecc3b70e727b8cd5f896ef7569fc3414c711e85b6fb25a5936e11
|
|
7
|
+
data.tar.gz: 32539bb893f836435848a10a0a12646a7dadf8d0ceaf7c3269d7b2c1d5302f96f82032a192622134a6db487ae3bb5d981077dd515a64050bfb801ca4592bb1c9
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
|
2
2
|
|
|
3
|
+
## 1.1.0 2025-01-07
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Fixed
|
|
7
|
+
|
|
8
|
+
- Update minimal ruby version to 3.1 (@flash-gordon)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
[Compare v1.0.1...v1.1.0](https://github.com/dry-rb/dry-auto_inject/compare/v1.0.1...v1.1.0)
|
|
12
|
+
|
|
13
|
+
## 1.0.1 2023-02-13
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Update passthrough parameters list to support ruby 3.2.1 (@hieuk09 in [#88](https://github.com/dry-rb/dry-auto_inject/pull/88))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
[Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-auto_inject/compare/v1.0.0...v1.0.1)
|
|
22
|
+
|
|
3
23
|
## 1.0.0 2022-11-18
|
|
4
24
|
|
|
5
25
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
1
|
<!--- this file is synced from dry-rb/template-gem project -->
|
|
2
|
+
|
|
2
3
|
[gem]: https://rubygems.org/gems/dry-auto_inject
|
|
3
4
|
[actions]: https://github.com/dry-rb/dry-auto_inject/actions
|
|
4
|
-
[codacy]: https://www.codacy.com/gh/dry-rb/dry-auto_inject
|
|
5
|
-
[chat]: https://dry-rb.zulipchat.com
|
|
6
|
-
[inchpages]: http://inch-ci.org/github/dry-rb/dry-auto_inject
|
|
7
|
-
|
|
8
|
-
# dry-auto_inject [][chat]
|
|
9
5
|
|
|
10
|
-
[][gem]
|
|
11
|
-
[][actions]
|
|
12
|
-
[][codacy]
|
|
13
|
-
[][codacy]
|
|
14
|
-
[][inchpages]
|
|
6
|
+
# dry-auto_inject [][gem] [][actions]
|
|
15
7
|
|
|
16
8
|
## Links
|
|
17
9
|
|
|
18
10
|
* [User documentation](https://dry-rb.org/gems/dry-auto_inject)
|
|
19
11
|
* [API documentation](http://rubydoc.info/gems/dry-auto_inject)
|
|
12
|
+
* [Forum](https://discourse.dry-rb.org)
|
|
20
13
|
|
|
21
14
|
## Supported Ruby versions
|
|
22
15
|
|
|
23
16
|
This library officially supports the following Ruby versions:
|
|
24
17
|
|
|
25
|
-
* MRI `>=
|
|
26
|
-
* jruby `>= 9.
|
|
18
|
+
* MRI `>= 3.1`
|
|
19
|
+
* jruby `>= 9.4` (not tested on CI)
|
|
27
20
|
|
|
28
21
|
## License
|
|
29
22
|
|
data/dry-auto_inject.gemspec
CHANGED
|
@@ -16,23 +16,21 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
spec.summary = "Container-agnostic automatic constructor injection"
|
|
17
17
|
spec.description = spec.summary
|
|
18
18
|
spec.homepage = "https://dry-rb.org/gems/dry-auto_inject"
|
|
19
|
-
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-auto_inject.gemspec",
|
|
19
|
+
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-auto_inject.gemspec",
|
|
20
|
+
"lib/**/*"]
|
|
20
21
|
spec.bindir = "bin"
|
|
21
22
|
spec.executables = []
|
|
22
23
|
spec.require_paths = ["lib"]
|
|
23
24
|
|
|
24
|
-
spec.metadata["allowed_push_host"]
|
|
25
|
-
spec.metadata["changelog_uri"]
|
|
26
|
-
spec.metadata["source_code_uri"]
|
|
27
|
-
spec.metadata["bug_tracker_uri"]
|
|
25
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
26
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-auto_inject/blob/main/CHANGELOG.md"
|
|
27
|
+
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-auto_inject"
|
|
28
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-auto_inject/issues"
|
|
29
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
|
28
30
|
|
|
29
|
-
spec.required_ruby_version = ">=
|
|
31
|
+
spec.required_ruby_version = ">= 3.1"
|
|
30
32
|
|
|
31
33
|
# to update dependencies edit project.yml
|
|
32
|
-
spec.
|
|
33
|
-
spec.
|
|
34
|
-
|
|
35
|
-
spec.add_development_dependency "bundler"
|
|
36
|
-
spec.add_development_dependency "rake"
|
|
37
|
-
spec.add_development_dependency "rspec"
|
|
34
|
+
spec.add_dependency "dry-core", "~> 1.1"
|
|
35
|
+
spec.add_dependency "zeitwerk", "~> 2.6"
|
|
38
36
|
end
|
|
@@ -18,17 +18,13 @@ module Dry
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# @api public
|
|
21
|
-
def [](*dependency_names)
|
|
22
|
-
default[*dependency_names]
|
|
23
|
-
end
|
|
21
|
+
def [](*dependency_names) = default[*dependency_names]
|
|
24
22
|
|
|
25
|
-
def respond_to_missing?(name,
|
|
26
|
-
strategies.key?(name)
|
|
27
|
-
end
|
|
23
|
+
def respond_to_missing?(name, _ = false) = strategies.key?(name)
|
|
28
24
|
|
|
29
25
|
private
|
|
30
26
|
|
|
31
|
-
def method_missing(name,
|
|
27
|
+
def method_missing(name, ...)
|
|
32
28
|
if strategies.key?(name)
|
|
33
29
|
Injector.new(container, strategies[name], builder: self)
|
|
34
30
|
else
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
module Dry
|
|
4
4
|
module AutoInject
|
|
5
|
-
DuplicateDependencyError = Class.new(StandardError)
|
|
6
|
-
DependencyNameInvalid = Class.new(StandardError)
|
|
5
|
+
DuplicateDependencyError = ::Class.new(::StandardError)
|
|
6
|
+
DependencyNameInvalid = ::Class.new(::StandardError)
|
|
7
7
|
|
|
8
|
-
VALID_NAME = /([a-z_][a-zA-Z_0-9]*)
|
|
8
|
+
VALID_NAME = /([a-z_][a-zA-Z_0-9]*)$/
|
|
9
9
|
|
|
10
10
|
class DependencyMap
|
|
11
11
|
def initialize(*dependencies)
|
|
12
12
|
@map = {}
|
|
13
13
|
|
|
14
14
|
dependencies = dependencies.dup
|
|
15
|
-
aliases = dependencies.last.is_a?(Hash) ? dependencies.pop : {}
|
|
15
|
+
aliases = dependencies.last.is_a?(::Hash) ? dependencies.pop : {}
|
|
16
16
|
|
|
17
17
|
dependencies.each do |identifier|
|
|
18
18
|
name = name_for(identifier)
|
|
@@ -24,17 +24,13 @@ module Dry
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def inspect
|
|
28
|
-
@map.inspect
|
|
29
|
-
end
|
|
27
|
+
def inspect = @map.inspect
|
|
30
28
|
|
|
31
29
|
def names
|
|
32
30
|
@names ||= @map.keys
|
|
33
31
|
end
|
|
34
32
|
|
|
35
|
-
def to_h
|
|
36
|
-
@map.dup
|
|
37
|
-
end
|
|
33
|
+
def to_h = @map.dup
|
|
38
34
|
alias_method :to_hash, :to_h
|
|
39
35
|
|
|
40
36
|
private
|
|
@@ -4,7 +4,7 @@ require "dry/auto_inject/strategies"
|
|
|
4
4
|
|
|
5
5
|
module Dry
|
|
6
6
|
module AutoInject
|
|
7
|
-
class Injector < BasicObject
|
|
7
|
+
class Injector < ::BasicObject
|
|
8
8
|
# @api private
|
|
9
9
|
attr_reader :container
|
|
10
10
|
|
|
@@ -23,19 +23,13 @@ module Dry
|
|
|
23
23
|
@builder = builder
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def [](*dependency_names)
|
|
27
|
-
strategy.new(container, *dependency_names)
|
|
28
|
-
end
|
|
26
|
+
def [](*dependency_names) = strategy.new(container, *dependency_names)
|
|
29
27
|
|
|
30
|
-
def respond_to_missing?(name,
|
|
31
|
-
builder.respond_to?(name)
|
|
32
|
-
end
|
|
28
|
+
def respond_to_missing?(name, _ = false) = builder.respond_to?(name)
|
|
33
29
|
|
|
34
30
|
private
|
|
35
31
|
|
|
36
|
-
def method_missing(name,
|
|
37
|
-
builder.__send__(name)
|
|
38
|
-
end
|
|
32
|
+
def method_missing(name, ...) = builder.__send__(name)
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
end
|
|
@@ -6,10 +6,15 @@ module Dry
|
|
|
6
6
|
module AutoInject
|
|
7
7
|
# @api private
|
|
8
8
|
class MethodParameters
|
|
9
|
-
PASS_THROUGH = [
|
|
9
|
+
PASS_THROUGH = [
|
|
10
|
+
[%i[rest]],
|
|
11
|
+
[%i[rest], %i[keyrest]],
|
|
12
|
+
[%i[rest *]],
|
|
13
|
+
[%i[rest *], %i[keyrest **]]
|
|
14
|
+
].freeze
|
|
10
15
|
|
|
11
16
|
def self.of(obj, name)
|
|
12
|
-
Enumerator.new do |y|
|
|
17
|
+
::Enumerator.new do |y|
|
|
13
18
|
begin
|
|
14
19
|
method = obj.instance_method(name)
|
|
15
20
|
rescue ::NameError # rubocop: disable Lint/SuppressedException
|
|
@@ -39,32 +44,24 @@ module Dry
|
|
|
39
44
|
def sequential_arguments?
|
|
40
45
|
return @sequential_arguments if defined? @sequential_arguments
|
|
41
46
|
|
|
42
|
-
@sequential_arguments = parameters.any?
|
|
47
|
+
@sequential_arguments = parameters.any? do |type, _|
|
|
43
48
|
type == :req || type == :opt
|
|
44
|
-
|
|
49
|
+
end
|
|
45
50
|
end
|
|
46
51
|
|
|
47
52
|
def keyword_names
|
|
48
|
-
@keyword_names ||= parameters.each_with_object(Set.new)
|
|
53
|
+
@keyword_names ||= parameters.each_with_object(::Set.new) do |(type, name), names|
|
|
49
54
|
names << name if type == :key || type == :keyreq
|
|
50
|
-
|
|
55
|
+
end
|
|
51
56
|
end
|
|
52
57
|
|
|
53
|
-
def keyword?(name)
|
|
54
|
-
keyword_names.include?(name)
|
|
55
|
-
end
|
|
58
|
+
def keyword?(name) = keyword_names.include?(name)
|
|
56
59
|
|
|
57
|
-
def empty?
|
|
58
|
-
parameters.empty?
|
|
59
|
-
end
|
|
60
|
+
def empty? = parameters.empty?
|
|
60
61
|
|
|
61
|
-
def length
|
|
62
|
-
parameters.length
|
|
63
|
-
end
|
|
62
|
+
def length = parameters.length
|
|
64
63
|
|
|
65
|
-
def pass_through?
|
|
66
|
-
PASS_THROUGH.include?(parameters)
|
|
67
|
-
end
|
|
64
|
+
def pass_through? = PASS_THROUGH.include?(parameters)
|
|
68
65
|
|
|
69
66
|
EMPTY = new([])
|
|
70
67
|
end
|
|
@@ -9,12 +9,14 @@ module Dry
|
|
|
9
9
|
|
|
10
10
|
def define_new
|
|
11
11
|
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
|
12
|
+
deps_with_indices = dependency_map.to_h.values.map.with_index
|
|
13
|
+
|
|
12
14
|
define_method :new do |*args|
|
|
13
|
-
deps =
|
|
15
|
+
deps = deps_with_indices.map do |identifier, i|
|
|
14
16
|
args[i] || container[identifier]
|
|
15
|
-
|
|
17
|
+
end
|
|
16
18
|
|
|
17
|
-
super(*deps, *args
|
|
19
|
+
super(*deps, *args.drop(deps.size))
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -46,11 +48,12 @@ module Dry
|
|
|
46
48
|
end
|
|
47
49
|
|
|
48
50
|
def define_initialize_with_splat(super_parameters)
|
|
49
|
-
super_pass =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
super_pass =
|
|
52
|
+
if super_parameters.splat?
|
|
53
|
+
"*args"
|
|
54
|
+
else
|
|
55
|
+
"*args.take(#{super_parameters.length})"
|
|
56
|
+
end
|
|
54
57
|
|
|
55
58
|
assignments = dependency_map.names.map.with_index do |name, idx|
|
|
56
59
|
"@#{name} = args[#{idx}]"
|
|
@@ -9,12 +9,14 @@ module Dry
|
|
|
9
9
|
|
|
10
10
|
def define_new
|
|
11
11
|
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
|
12
|
+
deps_map = dependency_map.to_h
|
|
13
|
+
|
|
12
14
|
define_method :new do |options = {}|
|
|
13
|
-
deps =
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
deps = deps_map.transform_values do |identifier|
|
|
16
|
+
options[identifier] || container[identifier]
|
|
17
|
+
end
|
|
16
18
|
|
|
17
|
-
super(deps)
|
|
19
|
+
super({**deps, **options})
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -24,7 +26,7 @@ module Dry
|
|
|
24
26
|
super_pass = super_params.empty? ? "" : "options"
|
|
25
27
|
assignments = dependency_map.names.map do |name|
|
|
26
28
|
<<~RUBY
|
|
27
|
-
|
|
29
|
+
if options.key?(:#{name}) || !instance_variable_defined?(:'@#{name}')
|
|
28
30
|
@#{name} = options[:#{name}]
|
|
29
31
|
end
|
|
30
32
|
RUBY
|
|
@@ -33,7 +35,7 @@ module Dry
|
|
|
33
35
|
|
|
34
36
|
instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
35
37
|
def initialize(options) # def initialize(options)
|
|
36
|
-
#
|
|
38
|
+
# if options.key?(:dep) || !instance_variable_defined?(:@dep)
|
|
37
39
|
#{body} # @dep = options[:dep]
|
|
38
40
|
# end
|
|
39
41
|
super(#{super_pass}) # super(options)
|
|
@@ -11,9 +11,9 @@ module Dry
|
|
|
11
11
|
register :default, strategy
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
register :args, proc { Args }
|
|
14
|
+
register :args, proc { Strategies::Args }
|
|
15
15
|
register :hash, proc { Strategies::Hash }
|
|
16
|
-
register_default :kwargs, proc { Kwargs }
|
|
16
|
+
register_default :kwargs, proc { Strategies::Kwargs }
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
data/lib/dry/auto_inject.rb
CHANGED
|
@@ -6,10 +6,10 @@ require "dry/core"
|
|
|
6
6
|
module Dry
|
|
7
7
|
module AutoInject
|
|
8
8
|
def self.loader
|
|
9
|
-
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
|
10
|
-
root = File.expand_path("..", __dir__)
|
|
9
|
+
@loader ||= ::Zeitwerk::Loader.new.tap do |loader|
|
|
10
|
+
root = ::File.expand_path("..", __dir__)
|
|
11
11
|
loader.tag = "dry-auto_inject"
|
|
12
|
-
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-auto_inject.rb")
|
|
12
|
+
loader.inflector = ::Zeitwerk::GemInflector.new("#{root}/dry-auto_inject.rb")
|
|
13
13
|
loader.push_dir(root)
|
|
14
14
|
loader.ignore(
|
|
15
15
|
"#{root}/dry-auto_inject.rb",
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-auto_inject
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.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:
|
|
11
|
+
date: 2025-01-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-core
|
|
@@ -16,20 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.
|
|
20
|
-
- - "<"
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: '2'
|
|
19
|
+
version: '1.1'
|
|
23
20
|
type: :runtime
|
|
24
21
|
prerelease: false
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
23
|
requirements:
|
|
27
24
|
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '1.
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '2'
|
|
26
|
+
version: '1.1'
|
|
33
27
|
- !ruby/object:Gem::Dependency
|
|
34
28
|
name: zeitwerk
|
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -44,48 +38,6 @@ dependencies:
|
|
|
44
38
|
- - "~>"
|
|
45
39
|
- !ruby/object:Gem::Version
|
|
46
40
|
version: '2.6'
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: bundler
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - ">="
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0'
|
|
54
|
-
type: :development
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - ">="
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0'
|
|
61
|
-
- !ruby/object:Gem::Dependency
|
|
62
|
-
name: rake
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - ">="
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0'
|
|
68
|
-
type: :development
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - ">="
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '0'
|
|
75
|
-
- !ruby/object:Gem::Dependency
|
|
76
|
-
name: rspec
|
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - ">="
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '0'
|
|
82
|
-
type: :development
|
|
83
|
-
prerelease: false
|
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - ">="
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0'
|
|
89
41
|
description: Container-agnostic automatic constructor injection
|
|
90
42
|
email:
|
|
91
43
|
- piotr.solnica@gmail.com
|
|
@@ -117,7 +69,8 @@ metadata:
|
|
|
117
69
|
changelog_uri: https://github.com/dry-rb/dry-auto_inject/blob/main/CHANGELOG.md
|
|
118
70
|
source_code_uri: https://github.com/dry-rb/dry-auto_inject
|
|
119
71
|
bug_tracker_uri: https://github.com/dry-rb/dry-auto_inject/issues
|
|
120
|
-
|
|
72
|
+
rubygems_mfa_required: 'true'
|
|
73
|
+
post_install_message:
|
|
121
74
|
rdoc_options: []
|
|
122
75
|
require_paths:
|
|
123
76
|
- lib
|
|
@@ -125,15 +78,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
125
78
|
requirements:
|
|
126
79
|
- - ">="
|
|
127
80
|
- !ruby/object:Gem::Version
|
|
128
|
-
version:
|
|
81
|
+
version: '3.1'
|
|
129
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
83
|
requirements:
|
|
131
84
|
- - ">="
|
|
132
85
|
- !ruby/object:Gem::Version
|
|
133
86
|
version: '0'
|
|
134
87
|
requirements: []
|
|
135
|
-
rubygems_version: 3.
|
|
136
|
-
signing_key:
|
|
88
|
+
rubygems_version: 3.3.27
|
|
89
|
+
signing_key:
|
|
137
90
|
specification_version: 4
|
|
138
91
|
summary: Container-agnostic automatic constructor injection
|
|
139
92
|
test_files: []
|