dry-auto_inject 0.4.1 → 0.4.2
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 +12 -0
- data/lib/dry/auto_inject/strategies/args.rb +8 -6
- data/lib/dry/auto_inject/strategies/constructor.rb +4 -10
- data/lib/dry/auto_inject/strategies/hash.rb +6 -6
- data/lib/dry/auto_inject/strategies/kwargs.rb +6 -6
- data/lib/dry/auto_inject/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f9eb1effcee4d7bd3a8741b9d66b736ec2a1254
|
4
|
+
data.tar.gz: f8401c55f988c919a09033e510fd58566bd76484
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c6eea940b2c7c57137a737e3d66abd763ec2ff4e51725e7386bf15020efabe6c2485e412f0088fe54dccc16114914d0bada89d3a5a1c55e11da73f211b155e5
|
7
|
+
data.tar.gz: aac93975a6bbcd756108a72310d7f8995430bae11a97c867a3073e1503e95012cd177187d4aff0b4a9a4db6c988a3b21eb4f26074261eda5a0fdc450e56dacdb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# 0.4.2 / 2016-10-10
|
2
|
+
|
3
|
+
### Fixed
|
4
|
+
|
5
|
+
- Fixed issue where injectors for different containers could not be used on different classes in an inheritance hierarchy (timriley in [#31](https://github.com/dry-rb/dry-auto_inject/pull/31))
|
6
|
+
|
7
|
+
# 0.4.1 / 2016-08-14
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
|
11
|
+
- Loosened version dependency on dry-container (AMHOL)
|
12
|
+
|
1
13
|
# 0.4.0 / 2016-07-26
|
2
14
|
|
3
15
|
### Added
|
@@ -7,14 +7,16 @@ module Dry
|
|
7
7
|
class Args < Constructor
|
8
8
|
private
|
9
9
|
|
10
|
-
def define_new
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def define_new
|
11
|
+
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
12
|
+
define_method :new do |*args|
|
13
|
+
deps = dependency_map.to_h.values.map.with_index { |identifier, i|
|
14
|
+
args[i] || container[identifier]
|
15
|
+
}
|
16
|
+
|
15
17
|
super(*deps, *args[deps.size..-1])
|
16
18
|
end
|
17
|
-
|
19
|
+
end
|
18
20
|
end
|
19
21
|
|
20
22
|
def define_initialize(klass)
|
@@ -4,13 +4,7 @@ module Dry
|
|
4
4
|
module AutoInject
|
5
5
|
class Strategies
|
6
6
|
class Constructor < Module
|
7
|
-
ClassMethods = Class.new(Module)
|
8
|
-
def initialize(container)
|
9
|
-
super()
|
10
|
-
define_method(:container) { container }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
7
|
+
ClassMethods = Class.new(Module)
|
14
8
|
InstanceMethods = Class.new(Module)
|
15
9
|
|
16
10
|
attr_reader :container
|
@@ -22,14 +16,14 @@ module Dry
|
|
22
16
|
@container = container
|
23
17
|
@dependency_map = DependencyMap.new(*dependency_names)
|
24
18
|
@instance_mod = InstanceMethods.new
|
25
|
-
@class_mod = ClassMethods.new
|
19
|
+
@class_mod = ClassMethods.new
|
26
20
|
end
|
27
21
|
|
28
22
|
# @api private
|
29
23
|
def included(klass)
|
30
24
|
define_readers
|
31
25
|
|
32
|
-
define_new
|
26
|
+
define_new
|
33
27
|
define_initialize(klass)
|
34
28
|
|
35
29
|
klass.send(:include, instance_mod)
|
@@ -47,7 +41,7 @@ module Dry
|
|
47
41
|
self
|
48
42
|
end
|
49
43
|
|
50
|
-
def define_new
|
44
|
+
def define_new
|
51
45
|
raise NotImplementedError, "must be implemented by a subclass"
|
52
46
|
end
|
53
47
|
|
@@ -7,16 +7,16 @@ module Dry
|
|
7
7
|
class Hash < Constructor
|
8
8
|
private
|
9
9
|
|
10
|
-
def define_new
|
11
|
-
class_mod.
|
12
|
-
|
13
|
-
|
14
|
-
deps = names.each_with_object({}) { |(name, identifier), obj|
|
10
|
+
def define_new
|
11
|
+
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
12
|
+
define_method :new do |options = {}|
|
13
|
+
deps = dependency_map.to_h.each_with_object({}) { |(name, identifier), obj|
|
15
14
|
obj[name] = options[name] || container[identifier]
|
16
15
|
}.merge(options)
|
16
|
+
|
17
17
|
super(deps)
|
18
18
|
end
|
19
|
-
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def define_initialize(klass)
|
@@ -7,16 +7,16 @@ module Dry
|
|
7
7
|
class Kwargs < Constructor
|
8
8
|
private
|
9
9
|
|
10
|
-
def define_new
|
11
|
-
class_mod.
|
12
|
-
|
13
|
-
|
14
|
-
deps = names.each_with_object({}) { |(name, identifier), obj|
|
10
|
+
def define_new
|
11
|
+
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
12
|
+
define_method :new do |**args|
|
13
|
+
deps = dependency_map.to_h.each_with_object({}) { |(name, identifier), obj|
|
15
14
|
obj[name] = args[name] || container[identifier]
|
16
15
|
}.merge(args)
|
16
|
+
|
17
17
|
super(**deps)
|
18
18
|
end
|
19
|
-
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def define_initialize(klass)
|
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: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-container
|
@@ -123,4 +123,3 @@ signing_key:
|
|
123
123
|
specification_version: 4
|
124
124
|
summary: Container-agnostic automatic constructor injection
|
125
125
|
test_files: []
|
126
|
-
has_rdoc:
|