dependancy 0.0.2 → 0.0.3

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.
@@ -21,10 +21,21 @@ module Dependancy
21
21
  attr_writer name
22
22
 
23
23
  define_method name do
24
- begin
25
- yield self
26
- rescue
27
- nil
24
+ var_name = "@#{name}"
25
+
26
+ if instance_variable_defined?(var_name)
27
+ instance_variable_get(var_name)
28
+
29
+ else
30
+ val = begin
31
+ yield self
32
+ rescue
33
+ nil
34
+ end
35
+
36
+ instance_variable_set var_name, val
37
+
38
+ val
28
39
  end
29
40
  end
30
41
  end
@@ -1,3 +1,3 @@
1
1
  module Dependancy
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -27,12 +27,25 @@ describe Dependancy do
27
27
  Blur.new
28
28
  end
29
29
 
30
- dependancy :bar4
30
+ dependancy :bar4 do
31
+ counter
32
+ Bar.new
33
+ end
34
+
35
+ dependancy :bar5
36
+
37
+ def self.counter
38
+ @count ||= 0
39
+ @count += 1
40
+ end
41
+
42
+ def self.count
43
+ @count
44
+ end
31
45
  end
32
46
 
33
47
  it '._dependancies' do
34
- Foo._dependancies.should have(4).items
35
- Foo._dependancies.should == [:bar1, :bar2, :bar3, :bar4]
48
+ Foo._dependancies.should have(5).items
36
49
  end
37
50
 
38
51
  it 'dependancy have default value' do
@@ -58,4 +71,15 @@ describe Dependancy do
58
71
  foo = Foo.new
59
72
  foo.bar3.should be_nil
60
73
  end
74
+
75
+ it 'only eval dependancy block once' do
76
+ foo = Foo.new
77
+ foo.bar4
78
+ foo.bar4.should be_a Bar
79
+
80
+ foo.bar4 = 'stub'
81
+ foo.bar4.should == 'stub'
82
+
83
+ Foo.count.should == 1
84
+ end
61
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependancy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &9784550 !ruby/object:Gem::Requirement
16
+ requirement: &9991900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *9784550
24
+ version_requirements: *9991900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard-rspec
27
- requirement: &9784280 !ruby/object:Gem::Requirement
27
+ requirement: &9991640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *9784280
35
+ version_requirements: *9991640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: ruby-debug19
38
- requirement: &9784030 !ruby/object:Gem::Requirement
38
+ requirement: &9991370 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *9784030
46
+ version_requirements: *9991370
47
47
  description: Getters & setters for dependency injection
48
48
  email:
49
49
  - Aaron2Ti@gmail.com