encase 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yjk2YzExZTNhODI3MzhkNjEzYjU4ZmJiODdmY2Y2ODZiNTFkMzQzMQ==
4
+ MjBhMjQ3M2U0OGNiNjcwM2RlNzIyNjNmOTIzYmVjYTMyM2I1ODdlMw==
5
5
  data.tar.gz: !binary |-
6
- ODFiZDJkZjNmNWIyMmJjOWY4YzdmMDIxODgzMTMwZTkyNjE5MDk5OQ==
6
+ NmQ5NDYyMjE0MGNiMWQ1MmY4N2FkMDYxODE1NTEyMzg1ZjJiZmMzMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzVkMGZkYzM2NTFlYjYyZDFjMWQxYTZjNGYzNTUyZmE0NGYyYzc5YTkyOWQw
10
- ODE4NThmZjQxYmJlMDE0ZTEyNTQ2ODA3ZWIwNTdlOTA4ZjBkNmMzZmU0MzU3
11
- MTlkNjA4ZWFlZTZmZjVlOWI5ZWYzOTlhYjE4NTg2NGMxODE2Y2E=
9
+ YTFkMzQxNjIzYTU1MzRlYzRiYTcyYTRlN2I4MmU2MTRjNWM2MWU0Njg5YmNj
10
+ MTA2M2Y1YzVkNDJjNjVhMThiZDg3YzE5ZjE0NDQ1YjllY2U5Yjc5Yzk0ZDg1
11
+ YzEwM2NmMjBmYzU2MzA2YjUzNTg2NDI5YjU0ODcxMmZmNjFmODg=
12
12
  data.tar.gz: !binary |-
13
- MDc3NzRlOTE5NDMxNDcxZmQ1YzA3NzY5YjFjMTc0ZDBhOTZjZGFlNDIwOTI1
14
- OWZkNjAwMmU3NzQ4ZTcxNmY2MTQ5NzM5Y2ZmZTAxNjJkZTQxOGNhNzQzMjRl
15
- ZTc1NDA4ZDNkMjBmYjdmNTY0Y2U2MmZkODc2MjljNmUyMjI0YjA=
13
+ YzdjYzU5NGQ0ZjcwOTI4ODkzY2ZlMGY3NGNhN2Q1Y2U4YWM4YmI5NzM3ZmNl
14
+ MDU3NzMwNTNmODBjYjk5NzczZjdmYTZhYjcyMGRhYzIxZGFiYTQ2MzE1Mjk5
15
+ NWViNDIxNWQ4YTIyZmIzOTcxODU3NDZmOTE0YTIwNTY0MmE4YTc=
@@ -75,12 +75,13 @@ module Encase
75
75
  self
76
76
  end
77
77
 
78
- def lookup(key)
78
+ def lookup(key, origin = nil)
79
79
  if contains?(key)
80
80
  item = @items[key]
81
- item.instance
81
+ item.instance(origin)
82
82
  elsif !parent.nil?
83
- parent.lookup(key)
83
+ origin = self if origin.nil?
84
+ parent.lookup(key, origin)
84
85
  else
85
86
  raise KeyError.new("Key:#{key} not found in container.")
86
87
  end
@@ -14,8 +14,14 @@ module Encase
14
14
  self.value = value
15
15
  end
16
16
 
17
- def inject(object)
18
- self.container.inject(object)
17
+ def inject(object, origin = nil)
18
+ if origin.nil?
19
+ container = self.container
20
+ else
21
+ container = origin
22
+ end
23
+
24
+ container.inject(object)
19
25
  end
20
26
 
21
27
  def reify
@@ -44,10 +50,10 @@ module Encase
44
50
  end
45
51
 
46
52
  # public api
47
- def instance
53
+ def instance(origin = nil)
48
54
  reify unless reified?
49
55
  object = fetch
50
- inject(object)
56
+ inject(object, origin)
51
57
 
52
58
  object
53
59
  end
@@ -4,11 +4,11 @@ module Encase
4
4
  class ObjectItem < ContainerItem
5
5
  attr_accessor :injected
6
6
 
7
- def inject(object)
7
+ def inject(object, origin = nil)
8
8
  if self.injected
9
9
  false
10
10
  else
11
- self.injected = super(object)
11
+ self.injected = super(object, origin)
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module Encase
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -242,5 +242,34 @@ module Encase
242
242
  expect(me.c).to eq('C')
243
243
  end
244
244
  end
245
+
246
+ context 'Nested Container with lazy resolution' do
247
+ it 'can resolve logger lazily issue #4' do
248
+ class Logger
249
+ end
250
+
251
+ class MagicLogger
252
+ end
253
+
254
+ class House
255
+ include Encase
256
+ needs :logger
257
+ end
258
+
259
+ container = Container.new
260
+ container.configure do
261
+ object :logger, Logger.new
262
+ factory :house, House
263
+ end
264
+
265
+ child = container.child
266
+ child.configure do
267
+ object :logger, MagicLogger.new
268
+ end
269
+
270
+ house = child.lookup(:house)
271
+ expect(house.logger).to be_a(MagicLogger)
272
+ end
273
+ end
245
274
  end
246
275
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: encase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darshan Sawardekar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-18 00:00:00.000000000 Z
11
+ date: 2014-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler