expiration-date 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ == 1.0.1 / 2008-08-23
2
+
3
+ - 1 bug fix
4
+ * ensuring the block executes in the context of the
5
+ instance and not the class
6
+
1
7
  == 1.0.0 / 2008-08-22
2
8
 
3
9
  * 1 major enhancement
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ PROJ.url = 'http://codeforpeople.rubyforge.org/expiration-date'
14
14
  PROJ.rubyforge.name = 'codeforpeople'
15
15
  PROJ.rdoc.remote_dir = 'expiration-date'
16
16
  PROJ.version = ExpirationDate::VERSION
17
- PROJ.release_name = 'Stale Green Bacon'
17
+ PROJ.release_name = 'Buggy Bacon'
18
18
 
19
19
  PROJ.spec.opts << '--color'
20
20
 
@@ -4,7 +4,7 @@ require 'thread'
4
4
  module ExpirationDate
5
5
 
6
6
  # :stopdoc:
7
- VERSION = '1.0.0'
7
+ VERSION = '1.0.1'
8
8
  ExpirationLabel = Struct.new(:mutex, :age, :expires_on)
9
9
  # :startdoc:
10
10
 
@@ -57,7 +57,8 @@ module ExpirationDate
57
57
  if label.expires_on.nil? || now >= label.expires_on
58
58
  label.mutex.synchronize {
59
59
  break unless label.expires_on.nil? || now >= label.expires_on
60
- @#{name} = ::#{self.name}._managers_specials[#{name.inspect}].call
60
+ block = ::#{self.name}._managers_specials[#{name.inspect}]
61
+ @#{name} = instance_eval(&block)
61
62
  label.age ||= #{age}
62
63
  label.expires_on = now + label.age
63
64
  }
@@ -6,6 +6,7 @@ class TestA
6
6
 
7
7
  expiring_attr(:foo, 0.5) { 'foo' }
8
8
  expiring_attr('bar', 10 ) { 'bar' }
9
+ expiring_attr(:me, 60 ) { self }
9
10
  end
10
11
 
11
12
 
@@ -39,6 +40,19 @@ describe ExpirationDate do
39
40
  a.bar.should == 'bar'
40
41
  end
41
42
 
43
+ it 'can assign an attribute' do
44
+ a = TestA.new
45
+ a.foo.should == 'foo'
46
+
47
+ foobar = 'foobar'
48
+ a.foo = foobar
49
+ a.foo.should be_equal(foobar)
50
+
51
+ sleep 0.75
52
+ a.foo.should_not be_equal(foobar)
53
+ a.foo.should == 'foo'
54
+ end
55
+
42
56
  it 'can alter an expiration label' do
43
57
  a = TestA.new
44
58
  bar = a.bar
@@ -60,7 +74,7 @@ describe ExpirationDate do
60
74
  bar.should_not be_equal(a.bar)
61
75
  end
62
76
 
63
- it 'ignores requests on unknown expriation lables' do
77
+ it 'ignores requests on unknown expriation labels' do
64
78
  a = TestA.new
65
79
 
66
80
  h = a.expiration_labels
@@ -72,6 +86,11 @@ describe ExpirationDate do
72
86
  a.alter_expiration_label(:foobar, 42)
73
87
  h.keys.length == 2
74
88
  end
89
+
90
+ it 'executes the block in the context of the instance' do
91
+ a = TestA.new
92
+ a.me.should be_equal(a)
93
+ end
75
94
  end
76
95
 
77
96
  # EOF
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expiration-date
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pease
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-22 00:00:00 -06:00
12
+ date: 2008-08-23 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies: []
15
15