dependancy 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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