ioc 0.5.0 → 1.0.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/lib/ioc/container.rb +5 -15
- data/lib/ioc/version.rb +2 -2
- data/spec/ioc_spec.rb +1 -31
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 870b95c905301c1b57ce0709dace5b4d1974ce57
|
4
|
+
data.tar.gz: 7c9f78022bdf6a1c3fa9cdd3773d2052a0c88a76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29d65414dc5bfd8a28b67d6302151f1cedb1f15db580daf9fc5bdd2fb034dfe6807e118418286f646619959cd08272bdf79c879c06ad5c51a143d91424f86f4b
|
7
|
+
data.tar.gz: 32494aecb6e48f566b7cae7867ca137e682796af7bd5e1d9f4ea6a229c118c9295a3f5318baf91800f08e20c3bfcbb1dbcb7c243c184f6282c2b7d01ff5152ed
|
data/lib/ioc/container.rb
CHANGED
@@ -1,26 +1,20 @@
|
|
1
1
|
module IOC
|
2
2
|
class Container
|
3
|
-
|
4
|
-
|
5
|
-
installers = options[:installers] || []
|
6
|
-
parent = options[:parent]
|
7
|
-
container = new(parent)
|
8
|
-
[*installers].inject(container) do |c, installer|
|
3
|
+
def self.install(*installers)
|
4
|
+
[*installers].inject(new) do |c, installer|
|
9
5
|
installer.install(c)
|
10
6
|
c
|
11
7
|
end
|
12
8
|
end
|
13
9
|
|
14
|
-
def initialize
|
15
|
-
@resolver_factory = resolver_factory
|
10
|
+
def initialize
|
16
11
|
@resolvers = {}
|
17
12
|
@cache = {}
|
18
|
-
@parent = parent || Container
|
19
13
|
end
|
20
14
|
|
21
15
|
def register(name, object, options={})
|
22
16
|
raise(DuplicateRegistration, "Service '#{name}' has already been registered") if @resolvers.key?(name)
|
23
|
-
@resolvers[name] =
|
17
|
+
@resolvers[name] = ResolverFactory.new_instance(name, object, self, options)
|
24
18
|
end
|
25
19
|
|
26
20
|
def resolve(name)
|
@@ -32,11 +26,7 @@ module IOC
|
|
32
26
|
end
|
33
27
|
|
34
28
|
def resolver(name)
|
35
|
-
@resolvers[name] ||
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.resolver(name)
|
39
|
-
raise(UnknownService, "Service '#{name}' has not been registered")
|
29
|
+
@resolvers[name] || raise(UnknownService, "Service '#{name}' has not been registered")
|
40
30
|
end
|
41
31
|
end
|
42
32
|
end
|
data/lib/ioc/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module IOC
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
2
|
+
VERSION = "1.0.0"
|
3
|
+
end
|
data/spec/ioc_spec.rb
CHANGED
@@ -165,36 +165,6 @@ describe IOC::Container do
|
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
168
|
-
context 'when parent ioc container is assigned' do
|
169
|
-
it 'can traverse parent container to resolve object' do
|
170
|
-
parent = new_container
|
171
|
-
child = new_container(parent)
|
172
|
-
|
173
|
-
my_object = stub
|
174
|
-
parent.register(:myobj, my_object, :as => :instance)
|
175
|
-
child.resolve(:myobj).must_equal(my_object)
|
176
|
-
end
|
177
|
-
|
178
|
-
it 'cannot travers sibling containers to resolve object' do
|
179
|
-
parent = new_container
|
180
|
-
son = new_container(parent)
|
181
|
-
daughter = new_container(parent)
|
182
|
-
|
183
|
-
my_object = stub
|
184
|
-
daughter.register(:myobj, my_object, :as => :instance)
|
185
|
-
proc { son.resolve(:myobj) }.must_raise(IOC::UnknownService)
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'cannot be traversed by parent container' do
|
189
|
-
parent = new_container
|
190
|
-
child = new_container(parent)
|
191
|
-
|
192
|
-
my_object = stub
|
193
|
-
child.register(:myobj, my_object, :as => :instance)
|
194
|
-
proc { parent.resolve(:myobj) }.must_raise(IOC::UnknownService)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
168
|
it 'can register components using an installer' do
|
199
169
|
installer_class = Class.new do
|
200
170
|
def self.install(c)
|
@@ -202,7 +172,7 @@ describe IOC::Container do
|
|
202
172
|
end
|
203
173
|
end
|
204
174
|
|
205
|
-
container = IOC::Container.install(
|
175
|
+
container = IOC::Container.install(installer_class)
|
206
176
|
container.resolve(:myobj).must_equal('I was resolved')
|
207
177
|
end
|
208
178
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ioc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Lott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|