smart_ioc 0.5.1 → 0.5.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/Gemfile.lock +1 -1
- data/lib/smart_ioc/bean_definitions_storage.rb +24 -37
- data/lib/smart_ioc/container.rb +3 -3
- data/lib/smart_ioc/iocify.rb +2 -3
- data/lib/smart_ioc/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7dac45d6133624620331b4bbc980e7e19574881e51b4c98b2558d7b5114c584
|
4
|
+
data.tar.gz: a7753416faca728d5f72e2d8d215b3f77ef7de7eeb54f58601bf97d3b2d92f5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca530b375da6e1467d9d6ac60e7c84e3be955a8c1922bd4b4a2a24d53057ba3cb707ffe87a7bbaf0e897749b4825cdf138312df8fc24441a921c41cf60f8824d
|
7
|
+
data.tar.gz: ca838c6018069eead30c652c05f74a2c0f345429b87845e70c9f9d5cfb1d98021cb96f93417605ac2171ac99ee6ecf31dd12341f7fa85becdb201dcf5940e367
|
data/Gemfile.lock
CHANGED
@@ -2,11 +2,11 @@ class SmartIoC::BeanDefinitionsStorage
|
|
2
2
|
include SmartIoC::Errors
|
3
3
|
|
4
4
|
def initialize
|
5
|
-
@collection = []
|
5
|
+
@collection = Hash.new { |h, k| h[k] = [] }
|
6
6
|
end
|
7
7
|
|
8
8
|
def clear_dependencies
|
9
|
-
@collection.each do |bd|
|
9
|
+
@collection.values.flatten.each do |bd|
|
10
10
|
bd.dependencies.each do |dependency|
|
11
11
|
dependency.bean_definition = nil
|
12
12
|
end
|
@@ -15,12 +15,12 @@ class SmartIoC::BeanDefinitionsStorage
|
|
15
15
|
|
16
16
|
# @param bean_definition [BeanDefinition]
|
17
17
|
def push(bean_definition)
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
bd_scope = @collection[bean_definition.name]
|
19
|
+
|
20
|
+
existing_bd = bd_scope.detect { |bd| bd == bean_definition }
|
21
21
|
|
22
22
|
if existing_bd
|
23
|
-
|
23
|
+
bd_scope.reject! { |bd| bd == bean_definition }
|
24
24
|
|
25
25
|
message = <<~EOF
|
26
26
|
\nReplacing bean definition...
|
@@ -34,16 +34,15 @@ class SmartIoC::BeanDefinitionsStorage
|
|
34
34
|
puts message
|
35
35
|
end
|
36
36
|
|
37
|
-
|
37
|
+
bd_scope.push(bean_definition)
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
|
42
|
-
bean = @collection.detect {|bd| bd.klass.to_s == klass_str}
|
40
|
+
def delete(bean_definition)
|
41
|
+
bd_scope = @collection[bean_definition.name]
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
bd_scope.delete_if { |bd| bd.klass.to_s == bean_definition.klass.to_s }
|
44
|
+
|
45
|
+
nil
|
47
46
|
end
|
48
47
|
|
49
48
|
# Returns bean definition for specific class
|
@@ -52,27 +51,23 @@ class SmartIoC::BeanDefinitionsStorage
|
|
52
51
|
# @param context [Symbol]
|
53
52
|
# @return bean definition [BeanDefinition] or nil
|
54
53
|
def find_bean(bean_name, package, context)
|
55
|
-
@collection.detect
|
54
|
+
@collection[bean_name].detect do |bd|
|
55
|
+
bd.name == bean_name && bd.package == package && bd.context == context
|
56
|
+
end
|
56
57
|
end
|
57
58
|
|
58
59
|
def filter_by(bean_name, package = nil, context = nil)
|
59
|
-
|
60
|
-
bd.name == bean_name
|
61
|
-
end
|
60
|
+
bd_scope = @collection[bean_name]
|
62
61
|
|
63
62
|
if package
|
64
|
-
|
65
|
-
bd.package == package
|
66
|
-
end
|
63
|
+
bd_scope = bd_scope.select { |bd| bd.package == package }
|
67
64
|
end
|
68
65
|
|
69
66
|
if context
|
70
|
-
|
71
|
-
bd.context == context
|
72
|
-
end
|
67
|
+
bd_scope = bean_definitions.select { |bd| bd.context == context }
|
73
68
|
end
|
74
69
|
|
75
|
-
|
70
|
+
bd_scope
|
76
71
|
end
|
77
72
|
|
78
73
|
# @bean_name [Symbol] bean name
|
@@ -106,26 +101,18 @@ class SmartIoC::BeanDefinitionsStorage
|
|
106
101
|
# @package [Symbol, nil] package name
|
107
102
|
# @context [Symbol, nil] context
|
108
103
|
def filter_by_with_drop_to_default_context(bean_name, package = nil, context = nil)
|
109
|
-
|
110
|
-
bd.name == bean_name
|
111
|
-
end
|
104
|
+
bd_scope = @collection[bean_name]
|
112
105
|
|
113
106
|
if package
|
114
|
-
|
115
|
-
bd.package == package
|
116
|
-
end
|
107
|
+
bd_scope = bd_scope.select { |bd| bd.package == package }
|
117
108
|
end
|
118
109
|
|
119
110
|
if context
|
120
|
-
context_bean_definitions =
|
121
|
-
bd.context == context
|
122
|
-
end
|
111
|
+
context_bean_definitions = bd_scope.select { |bd| bd.context == context }
|
123
112
|
|
124
|
-
if
|
125
|
-
bean_definitions = context_bean_definitions
|
126
|
-
end
|
113
|
+
bd_scope = context_bean_definitions if context_bean_definitions.any?
|
127
114
|
end
|
128
115
|
|
129
|
-
|
116
|
+
bd_scope
|
130
117
|
end
|
131
118
|
end
|
data/lib/smart_ioc/container.rb
CHANGED
@@ -19,10 +19,10 @@ module SmartIoC
|
|
19
19
|
raise ArgumentError, "SmartIoC::Container should not be allocated. Use SmartIoC::Container.get_instance instead"
|
20
20
|
end
|
21
21
|
|
22
|
-
# @param klass [
|
22
|
+
# @param klass [BeanDefinition] bean class name
|
23
23
|
# @return nil
|
24
|
-
def unregister_bean(
|
25
|
-
bean_definitions_storage.
|
24
|
+
def unregister_bean(bean_definition)
|
25
|
+
bean_definitions_storage.delete(bean_definition)
|
26
26
|
clear_scopes
|
27
27
|
nil
|
28
28
|
end
|
data/lib/smart_ioc/iocify.rb
CHANGED
@@ -74,9 +74,8 @@ module SmartIoC::Iocify
|
|
74
74
|
if bean_definition.path == file_path
|
75
75
|
# seems that file with bean definition was reloaded
|
76
76
|
# lets clear all scopes so we do not have
|
77
|
-
|
78
|
-
|
79
|
-
container.force_clear_scopes
|
77
|
+
SmartIoC::Container.get_instance.unregister_bean(bean_definition)
|
78
|
+
SmartIoC::Container.get_instance.force_clear_scopes
|
80
79
|
else
|
81
80
|
raise ArgumentError, "bean with for class #{self.to_s} was already defined in #{bean_definition.path}"
|
82
81
|
end
|
data/lib/smart_ioc/version.rb
CHANGED