pharrell 0.6.1 → 0.7.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: 7eed3d692ced9756edd084b008e2d43df2f12f08
4
- data.tar.gz: f01316c10483a6bb8adbe4c942bee5361db51a5f
3
+ metadata.gz: a03c1e8f8cd9196d0a71b9068554a24d088d47dd
4
+ data.tar.gz: fce0a06653f61e7fde4a1387e3eb944a76d08547
5
5
  SHA512:
6
- metadata.gz: 5b95f8ac13597c151284ab8927e058fa6244a7368b0dfdfdd8845f7046f1478fb15880177a4aa0628745bc5e16208995a4f0229a77f2b1433df6bbb3c4618e2c
7
- data.tar.gz: 3e722194ea21d0c2c1988902a21f9b48094f8a5354eb2c46c267f19f82a44e8888ada834806a9882fc24941a40a64cb4e3bfd623de9bf60ee37c531b68aba717
6
+ metadata.gz: 93ebb87549b3c51756a79c5ce31b8f4bd42c8aeb6000d195214089f041e7f356734b696e9d09bba599fc1ede330bae3dda21bdbca5516db704f3f6e02e76fae4
7
+ data.tar.gz: a9b6b448c29fc48fa1600b4b13c5a7ec99343d7e8cec8cdb3c70dc7f35ee5948aeedddbb66df3ce080577f99a2defc04ef0af3a50e4e2f329d7c83ecd87ba5d5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pharrell (0.6.1)
4
+ pharrell (0.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -27,7 +27,7 @@ You can inject dependencies into classes like so:
27
27
  class CurrentTime
28
28
  include Pharrell::Injectible
29
29
 
30
- inject :current_time, Time
30
+ injected :current_time, Time
31
31
 
32
32
  def to_s
33
33
  hour = current_time.hour % 12
@@ -5,9 +5,10 @@ module Pharrell
5
5
  end
6
6
 
7
7
  module ClassMethods
8
- def inject(name, klass)
8
+ def injected(name, klass)
9
9
  define_method(name) do
10
- Pharrell.instance_for(klass)
10
+ @__pharrell_cache__ ||= {}
11
+ @__pharrell_cache__[klass] ||= Pharrell.instance_for(klass)
11
12
  end
12
13
  end
13
14
  end
data/pharrell.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.unshift lib unless $:.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "pharrell"
6
- s.version = "0.6.1"
6
+ s.version = "0.7.0"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Callum Stott"]
9
9
  s.email = ["callum@seadowg.com"]
@@ -7,7 +7,7 @@ describe "Injectable" do
7
7
  Pharrell.reset!
8
8
  end
9
9
 
10
- describe ".inject" do
10
+ describe ".injected" do
11
11
  it "defines a method to retrieve that class from Pharrell" do
12
12
  Pharrell.config(:base) { |c| c.bind(String, "Injected") }
13
13
  Pharrell.use_config(:base)
@@ -15,10 +15,25 @@ describe "Injectable" do
15
15
  klass = Class.new {
16
16
  include Pharrell::Injectable
17
17
 
18
- inject :string, String
18
+ injected :string, String
19
19
  }
20
20
 
21
21
  assert_equal(klass.new.send(:string), "Injected")
22
22
  end
23
+
24
+ it "caches lazy bindings on the instance" do
25
+ i = 0
26
+ Pharrell.config(:base) { |c| c.bind(Object) { i = i + 1 } }
27
+ Pharrell.use_config(:base)
28
+
29
+ klass = Class.new {
30
+ include Pharrell::Injectable
31
+
32
+ injected :injected_ob, Object
33
+ }
34
+
35
+ object = klass.new
36
+ assert_equal(object.send(:injected_ob), object.send(:injected_ob))
37
+ end
23
38
  end
24
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pharrell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Callum Stott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-26 00:00:00.000000000 Z
11
+ date: 2014-01-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: