timers 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,4 +1,11 @@
1
- 1.0.0
1
+ 1.0.2
2
+ -----
3
+ * Handle overdue timers correctly
4
+
5
+ 1.0.1
2
6
  -----
7
+ * Explicitly require Forwardable from stdlib
3
8
 
9
+ 1.0.0
10
+ -----
4
11
  * Initial release
data/lib/timers.rb CHANGED
@@ -33,7 +33,8 @@ class Timers
33
33
  def wait_interval(now = Time.now)
34
34
  timer = @timers.first
35
35
  return unless timer
36
- timer.time - now
36
+ interval = timer.time - now
37
+ interval > 0 ? interval : 0
37
38
  end
38
39
 
39
40
  # Fire all timers that are ready
@@ -1,3 +1,3 @@
1
1
  class Timers
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/spec/timers_spec.rb CHANGED
@@ -16,11 +16,23 @@ describe Timers do
16
16
  (Time.now - started_at).should be_within(Q).of interval
17
17
  end
18
18
 
19
+ it "fires instantly when next timer is in the past" do
20
+ fired = false
21
+ subject.after(Q) { fired = true }
22
+ sleep(Q * 2)
23
+ subject.wait
24
+
25
+ fired.should be_true
26
+ end
27
+
19
28
  it "calculates the interval until the next timer should fire" do
20
29
  interval = 0.1
21
30
 
22
31
  subject.after(interval)
23
32
  subject.wait_interval.should be_within(Q).of interval
33
+
34
+ sleep(interval)
35
+ subject.wait_interval.should be(0)
24
36
  end
25
37
 
26
38
  it "fires timers in the correct order" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-16 00:00:00.000000000 Z
12
+ date: 2012-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70286824369000 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70286824369000
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70286824368580 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,7 +37,12 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70286824368580
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  description: Pure Ruby one-shot and periodic timers
37
47
  email:
38
48
  - tony.arcieri@gmail.com
@@ -73,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
83
  version: '0'
74
84
  requirements: []
75
85
  rubyforge_project:
76
- rubygems_version: 1.8.10
86
+ rubygems_version: 1.8.24
77
87
  signing_key:
78
88
  specification_version: 3
79
89
  summary: Schedule procs to run after a certain time, or at periodic intervals, using
@@ -81,4 +91,3 @@ summary: Schedule procs to run after a certain time, or at periodic intervals, u
81
91
  test_files:
82
92
  - spec/spec_helper.rb
83
93
  - spec/timers_spec.rb
84
- has_rdoc: