service_container 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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/di.rb +8 -1
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4367bca35ecb50760faf9afe65f82504a3f1e61f
4
- data.tar.gz: f116ed953eb79109b65d0611365af49fee4b38f8
3
+ metadata.gz: bb3c26d617ddc0e0a918ab082abff4b7ffcd3efc
4
+ data.tar.gz: c9aa1c9aed12fcaaaa249a1adc7e0380d3898031
5
5
  SHA512:
6
- metadata.gz: 2490f9922ceecd85073ba8cd52d260b2fde4bf64d3ea6e9d3f29d5eee966fd9d8809f4b0e1712ea9a9da4e4086e5c117b58ef634dfb492f17d024cc0b4a11bde
7
- data.tar.gz: c3a8e0fade9428ce517b8afe9f978e4c0b7c369930869b7aa39d287e98af9787dfdd614224ef0e40a37f16eee5153be3c0bfa01ec991bb02321932793acab4d4
6
+ metadata.gz: e73ca96135fc7c0372d44e8616c98b66dab8c3e24a27a4256bd299b57f469e8e332ab574bf3d64d40fdff3d1d113ce69cbb3851e5f6aa25f31b2d6f62136f63b
7
+ data.tar.gz: 07eeed84e78e15a6ddbf6e552a9a39e615119d70230acf3f62a99903a469c418b76fb20c9c1167262c8ad8032a4a8a361da1231437ed4d08c5c086de6bf247a1
data/lib/di.rb CHANGED
@@ -17,6 +17,7 @@ module DI
17
17
 
18
18
  def initialize
19
19
  @services = {}
20
+ @cache = {}
20
21
  end
21
22
 
22
23
  # Registers a service named +name+. The +block+ will be used to
@@ -29,8 +30,9 @@ module DI
29
30
  @services[name] = block
30
31
  end
31
32
 
33
+ # Retrieves a service named +name+
32
34
  def get(name)
33
- service_block(name).call(self)
35
+ @cache[name] ||= service_block(name).call(self)
34
36
  end
35
37
 
36
38
  # Return the block that creates the named service. Throw an
@@ -39,5 +41,10 @@ module DI
39
41
  def service_block(name)
40
42
  @services[name] || fail(MissingServiceError, "No service is registered with the name '#{name}'")
41
43
  end
44
+
45
+ # Resets the cached services
46
+ def clear_cache!
47
+ @cache = {}
48
+ end
42
49
  end
43
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: service_container
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
  - Chanaka Sandaruwan
@@ -10,7 +10,7 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-07-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A small dependendency injection container
13
+ description: A small dependendency injection container for ruby
14
14
  email: chanakasan@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -29,7 +29,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: 1.9.3
33
33
  required_rubygems_version: !ruby/object:Gem::Requirement
34
34
  requirements:
35
35
  - - ">="
@@ -40,5 +40,5 @@ rubyforge_project:
40
40
  rubygems_version: 2.2.3
41
41
  signing_key:
42
42
  specification_version: 4
43
- summary: A light-weight IOC container
43
+ summary: A light-weight di container for ruby
44
44
  test_files: []