enat 0.1.1 → 0.1.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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -1
- data/README.markdown +1 -1
- data/enat.gemspec +13 -12
- data/lib/enat.rb +3 -4
- data/lib/enat/enat.rb +8 -2
- data/lib/enat/error.rb +2 -1
- data/lib/enat/version.rb +3 -1
- data/spec/enat/enat_spec.rb +41 -0
- data/spec/spec_helper.rb +2 -3
- metadata +18 -25
- data/spec/enat_spec.rb +0 -19
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f6c1274fc4f10b8860e681795296cca03927b332
|
4
|
+
data.tar.gz: 08ce22e83b9a42170d38984e3915b07c77d84129
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e8e6eb7f31ef0fafa6d804224e0c7d42f0b33fd0bde9454b251c92e2bc720acd8577ade34a06f393e6e3a968ab7a59fa7a8c97cd51b304e410281f7617801ebc
|
7
|
+
data.tar.gz: eb84db096172fe21dc5fb752bf242d1a2c5b9e7300b75bf8feb6869594dc6dd5cf32ee7b1886f42d658983d9538f8106a4659cd6cbb9a4c45c8052449740bf1b
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0
|
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -5,7 +5,7 @@ It's quite simple, really - it lets you do something every specified interval of
|
|
5
5
|
yields the iteration count (starts at zero).
|
6
6
|
|
7
7
|
It requires 'active_support/time', so as to allow time intervals to be specified as 5.seconds, 6.7.days, etc. The 'every'
|
8
|
-
method accepts
|
8
|
+
method accepts non-zero numeric values (anything that responds to `to_f`).
|
9
9
|
|
10
10
|
If the operation inside the block takes longer than the specified interval, then the next iteration will begin
|
11
11
|
immediately after the last.
|
data/enat.gemspec
CHANGED
@@ -4,24 +4,25 @@ $:.unshift lib unless $:.include?(lib)
|
|
4
4
|
require 'enat/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = Enat
|
7
|
+
s.name = 'enat'
|
8
|
+
s.version = Enat.version
|
9
9
|
s.platform = Gem::Platform::RUBY
|
10
10
|
|
11
|
-
s.authors = [
|
12
|
-
s.email =
|
13
|
-
s.summary =
|
14
|
-
s.description =
|
15
|
-
s.homepage =
|
11
|
+
s.authors = ['Hari Gopal']
|
12
|
+
s.email = 'harigopal1@gmail.com'
|
13
|
+
s.summary = 'Does something every specified interval.'
|
14
|
+
s.description = 'Executes a block of code at intervals of time, without guarantee of timing.'
|
15
|
+
s.homepage = 'http://github.com/harigopal/enat'
|
16
|
+
s.license = 'MIT'
|
16
17
|
|
17
18
|
s.required_ruby_version = '>= 1.9.2'
|
18
19
|
|
19
|
-
s.add_development_dependency
|
20
|
-
s.add_development_dependency
|
20
|
+
s.add_development_dependency 'rake'
|
21
|
+
s.add_development_dependency 'rspec'
|
21
22
|
|
22
|
-
s.add_dependency
|
23
|
+
s.add_dependency 'activesupport'
|
23
24
|
|
24
|
-
s.files = `git ls-files`.split("\n") -
|
25
|
+
s.files = `git ls-files`.split("\n") - %w(Gemfile.lock .rvmrc)
|
25
26
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
26
|
-
s.require_paths =
|
27
|
+
s.require_paths = %w(lib)
|
27
28
|
end
|
data/lib/enat.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
# Gems
|
2
|
-
require
|
2
|
+
require 'active_support/time'
|
3
3
|
|
4
4
|
# Local
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative "enat/enat"
|
5
|
+
require_relative 'enat/version'
|
6
|
+
require_relative 'enat/enat'
|
8
7
|
|
9
8
|
include Enat
|
data/lib/enat/enat.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
|
+
require_relative 'error'
|
2
|
+
|
1
3
|
# Every Now And Then
|
2
4
|
module Enat
|
3
5
|
# Yields to block every supplied interval
|
4
6
|
#
|
5
7
|
# @param [Fixnum, Float] interval_in_seconds minimum time interval between yields
|
6
8
|
def every(interval_in_seconds)
|
9
|
+
unless interval_in_seconds.respond_to?(:to_f)
|
10
|
+
raise InvalidIntervalError, 'Interval must be a numeric (Fixnum, Float).'
|
11
|
+
end
|
12
|
+
|
7
13
|
interval_in_seconds = interval_in_seconds.to_f
|
8
14
|
|
9
|
-
|
10
|
-
raise
|
15
|
+
if interval_in_seconds.zero?
|
16
|
+
raise ZeroIntervalError, 'Interval cannot be zero.'
|
11
17
|
end
|
12
18
|
|
13
19
|
iteration = 0
|
data/lib/enat/error.rb
CHANGED
data/lib/enat/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
class DummyClass
|
4
|
+
include Enat
|
5
|
+
|
6
|
+
def test_method
|
7
|
+
every 1.second do |i|
|
8
|
+
break if i >= 5
|
9
|
+
repeatable_task
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def repeatable_task
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe DummyClass do
|
18
|
+
it { should respond_to(:every).with(1).argument }
|
19
|
+
|
20
|
+
context 'when supplied interval cannot be converted to a Float value' do
|
21
|
+
it 'raises an error' do
|
22
|
+
expect {
|
23
|
+
subject.every(Object.new) {}
|
24
|
+
}.to raise_error(Enat::InvalidIntervalError)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when supplied interval is zero' do
|
29
|
+
it 'raises an error' do
|
30
|
+
expect {
|
31
|
+
subject.every('foo') {}
|
32
|
+
}.to raise_error(Enat::ZeroIntervalError)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'works' do
|
37
|
+
subject.stub :sleep
|
38
|
+
subject.should_receive(:repeatable_task).exactly(5).times
|
39
|
+
subject.test_method
|
40
|
+
end
|
41
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
SimpleCov.start { add_filter 'vendor' }
|
1
|
+
require 'rspec'
|
2
|
+
require 'enat'
|
metadata
CHANGED
@@ -1,62 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Hari Gopal
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activesupport
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
description: Executes a block of code at intervals of time, without guarantee of timing.
|
@@ -66,6 +59,7 @@ extensions: []
|
|
66
59
|
extra_rdoc_files: []
|
67
60
|
files:
|
68
61
|
- .gitignore
|
62
|
+
- .ruby-version
|
69
63
|
- Gemfile
|
70
64
|
- README.markdown
|
71
65
|
- Rakefile
|
@@ -75,34 +69,33 @@ files:
|
|
75
69
|
- lib/enat/enat.rb
|
76
70
|
- lib/enat/error.rb
|
77
71
|
- lib/enat/version.rb
|
78
|
-
- spec/enat_spec.rb
|
72
|
+
- spec/enat/enat_spec.rb
|
79
73
|
- spec/spec_helper.rb
|
80
74
|
- test.rb
|
81
75
|
homepage: http://github.com/harigopal/enat
|
82
|
-
licenses:
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
83
79
|
post_install_message:
|
84
80
|
rdoc_options: []
|
85
81
|
require_paths:
|
86
82
|
- lib
|
87
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
84
|
requirements:
|
90
|
-
- -
|
85
|
+
- - '>='
|
91
86
|
- !ruby/object:Gem::Version
|
92
87
|
version: 1.9.2
|
93
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
89
|
requirements:
|
96
|
-
- -
|
90
|
+
- - '>='
|
97
91
|
- !ruby/object:Gem::Version
|
98
92
|
version: '0'
|
99
93
|
requirements: []
|
100
94
|
rubyforge_project:
|
101
|
-
rubygems_version:
|
95
|
+
rubygems_version: 2.0.3
|
102
96
|
signing_key:
|
103
|
-
specification_version:
|
97
|
+
specification_version: 4
|
104
98
|
summary: Does something every specified interval.
|
105
99
|
test_files:
|
106
|
-
- spec/enat_spec.rb
|
100
|
+
- spec/enat/enat_spec.rb
|
107
101
|
- spec/spec_helper.rb
|
108
|
-
has_rdoc:
|
data/spec/enat_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require "rspec"
|
2
|
-
|
3
|
-
require_relative '../lib/enat'
|
4
|
-
|
5
|
-
class DummyClass
|
6
|
-
include Enat
|
7
|
-
end
|
8
|
-
|
9
|
-
describe DummyClass do
|
10
|
-
it { should respond_to(:every).with(1).argument }
|
11
|
-
|
12
|
-
context "when supplied interval is zero" do
|
13
|
-
it "should raise error" do
|
14
|
-
expect {
|
15
|
-
subject.every("foo") { }
|
16
|
-
}.to raise_error(Enat::EnatError, "Interval must be non-zero")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|