diftw 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d520a70920cae29c12a9439e049b090bdc2d23f
4
- data.tar.gz: e6c858bbdae7bc242650f6e00497229716590108
3
+ metadata.gz: e6366250c8436b7ac8f13cbdb141c00df330b3b3
4
+ data.tar.gz: 5539558b8a792c39d348d26dc99ab1eefef1f291
5
5
  SHA512:
6
- metadata.gz: 111bddaae6e8b85ad20e83d9f6cf79462c9c6c13de250ed15bb6e47c982d88f702190190bf01668c4945ed033c242dd7bf9df66479a69367d6544fdea54e854b
7
- data.tar.gz: 23d75ade4800dd9c22a436c55044f1e3b8577ddb64b37351626d9c857d968137f9a3e620e8e9ee4bee366a9a257db1d21646fa7b8ac46677687cfd3e92c712fa
6
+ metadata.gz: fa432f1b19cef264335f41bada27a5acee05263ba05c5c0ff40ea897b761ee18f6445a5196ee19400c5c2d851d919307de4c556785fc9467aaf3c40dbe04ee12
7
+ data.tar.gz: 2dd9517311e3f10047874923c36ad2222b22561c158dd4e43ba86eff2524afdbe4539ebd1eb896702bd8674901679a5a0e8d7fad4b988fc0c7ede1cd74c3b18c
data/README.md CHANGED
@@ -174,3 +174,19 @@ To inject different dependencies in these environments, you have several options
174
174
  DI[:foo] = -> { OpenStruct.new(message: 'Test Foo') }
175
175
 
176
176
  And you can use the parent-child injector features described above.
177
+
178
+ ### Injecting in before(:each)
179
+
180
+ If you want to re-inject something into a class's injector in something like rspec's `before(:each)`:
181
+
182
+ before :each do
183
+ # Give all MyService instances 'Test foo' as #foo
184
+ MyService.injector[:foo] = -> {
185
+ 'Test foo'
186
+ }
187
+ end
188
+
189
+ after :each do
190
+ # Remove the override & fallback to whatever was registered in the root injector
191
+ MyService.injector.delete :foo
192
+ end
@@ -64,7 +64,7 @@ module DiFtw
64
64
  #
65
65
  # @param name [Symbol] name of the dependency
66
66
  # @param y [Proc] the dependency wrapped in a Proc or block
67
- # @return [Injector] returns the Injector object
67
+ # @return [DiFtw::Injector] returns the Injector object
68
68
  #
69
69
  def register(name, y = nil, &block)
70
70
  registry[name] = y || block
@@ -106,6 +106,21 @@ module DiFtw
106
106
  end
107
107
  end
108
108
 
109
+ #
110
+ # Unregisters the dependency from this injector instance. This means requests for this dependency
111
+ # will continue on up the chain.
112
+ #
113
+ # @param name [Symbol] name of the dependency
114
+ # @return [DiFtw::Injector] returns the Injector object
115
+ #
116
+ def delete(name)
117
+ registry.delete name
118
+ if singleton
119
+ instance_variable_set "@_singleton_#{name}", nil
120
+ end
121
+ self
122
+ end
123
+
109
124
  #
110
125
  # Creates and returns a new Module which contains instance methods for all the dependencies you specified.
111
126
  # Simply include this module in your class, and all it's instances will have their dependencies injected.
@@ -1,4 +1,4 @@
1
1
  module DiFtw
2
2
  # Library version
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diftw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Hollinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-11 00:00:00.000000000 Z
11
+ date: 2016-07-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A small dependency injection library for Ruby
14
14
  email: jordan.hollinger@gmail.com