timers 1.0.1 → 1.0.2

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.
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: