enat 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -0,0 +1 @@
1
+ ruby-2.0.0
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
@@ -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 integers or floats.
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.
@@ -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 = "enat"
8
- s.version = Enat::VERSION
7
+ s.name = 'enat'
8
+ s.version = Enat.version
9
9
  s.platform = Gem::Platform::RUBY
10
10
 
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"
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 "rake"
20
- s.add_development_dependency "rspec"
20
+ s.add_development_dependency 'rake'
21
+ s.add_development_dependency 'rspec'
21
22
 
22
- s.add_dependency "activesupport"
23
+ s.add_dependency 'activesupport'
23
24
 
24
- s.files = `git ls-files`.split("\n") - ["Gemfile.lock", ".rvmrc"]
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 = ["lib"]
27
+ s.require_paths = %w(lib)
27
28
  end
@@ -1,9 +1,8 @@
1
1
  # Gems
2
- require "active_support/time"
2
+ require 'active_support/time'
3
3
 
4
4
  # Local
5
- require_relative "enat/version"
6
- require_relative "enat/error"
7
- require_relative "enat/enat"
5
+ require_relative 'enat/version'
6
+ require_relative 'enat/enat'
8
7
 
9
8
  include Enat
@@ -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
- unless interval_in_seconds > 0
10
- raise EnatError, "Interval must be non-zero"
15
+ if interval_in_seconds.zero?
16
+ raise ZeroIntervalError, 'Interval cannot be zero.'
11
17
  end
12
18
 
13
19
  iteration = 0
@@ -1,3 +1,4 @@
1
1
  module Enat
2
- class EnatError < StandardError; end
2
+ class InvalidIntervalError < StandardError; end
3
+ class ZeroIntervalError < StandardError; end
3
4
  end
@@ -1,3 +1,5 @@
1
1
  module Enat
2
- VERSION = "0.1.1"
2
+ def self.version
3
+ Gem::Version.new '0.1.2'
4
+ end
3
5
  end
@@ -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
@@ -1,3 +1,2 @@
1
- require 'simplecov'
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.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: 2012-08-20 00:00:00.000000000 Z
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: 1.8.24
95
+ rubygems_version: 2.0.3
102
96
  signing_key:
103
- specification_version: 3
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:
@@ -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