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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbd6320c35da7137365876a79de6e2840f7a1da1
4
- data.tar.gz: 35e6e4aafc8e187aa80f088b0c190ceed34f135b
3
+ metadata.gz: 870b95c905301c1b57ce0709dace5b4d1974ce57
4
+ data.tar.gz: 7c9f78022bdf6a1c3fa9cdd3773d2052a0c88a76
5
5
  SHA512:
6
- metadata.gz: d441de52d56f472d6808a967f9c9a3906026a1b63747460525801696dde49e5b48b7b862c71c9f872ce825260c3c08d8dac54d5d6aeac711318d13788fb87282
7
- data.tar.gz: db57125c9b27d697938839cdc244128fd3b7a3153178a8517b06ec3ecb5ff1415c16976135e7c24ab8f74a922026eed7252d92776dbcffd54c454debd350643b
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
- def self.install(options)
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(parent=nil, resolver_factory=ResolverFactory)
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] = @resolver_factory.new_instance(name, object, self, options)
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] || @parent.resolver(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.5.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(:installers => installer_class)
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.5.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-08 00:00:00.000000000 Z
11
+ date: 2014-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler