periodic-scheduler 0.2.0 → 0.3.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -90,12 +90,10 @@ class PeriodicScheduler
90
90
  @event_groups_to_unschedule << group
91
91
  end
92
92
 
93
- def run!
93
+ def run!(&block)
94
94
  begin
95
95
  loop do
96
- run.each do |error|
97
- yield error if block_given?
98
- end
96
+ run(&block)
99
97
  end
100
98
  rescue EmptyScheduleError
101
99
  end
@@ -130,12 +128,14 @@ class PeriodicScheduler
130
128
  return run
131
129
  end
132
130
 
131
+ objects = []
132
+
133
133
  quants.each do |q|
134
134
  events = @events[q]
135
135
  @events.delete(q)
136
136
  events.each do |e|
137
137
  begin
138
- e.call
138
+ objects << e.call
139
139
  rescue StandardError => ex
140
140
  errors << ex
141
141
  end
@@ -143,7 +143,13 @@ class PeriodicScheduler
143
143
  end
144
144
  end
145
145
 
146
- errors
146
+ if block_given?
147
+ errors.each do |error|
148
+ yield error
149
+ end
150
+ end
151
+
152
+ objects
147
153
  end
148
154
 
149
155
  def empty?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "periodic-scheduler"
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jakub Pastuszek"]
12
- s.date = "2012-02-03"
12
+ s.date = "2012-02-08"
13
13
  s.description = "Controls execution of periodic scheduled tasks."
14
14
  s.email = "jpastuszek@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.homepage = "http://github.com/jpastuszek/periodic-scheduler"
35
35
  s.licenses = ["MIT"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = "1.8.10"
37
+ s.rubygems_version = "1.8.15"
38
38
  s.summary = "Scheduler for periodic tasks."
39
39
 
40
40
  if s.respond_to? :specification_version then
@@ -326,7 +326,11 @@ describe PeriodicScheduler do
326
326
 
327
327
  @options[:wait_function].call(35)
328
328
 
329
- errors = s.run
329
+ errors = []
330
+ s.run do |error|
331
+ errors << error
332
+ end
333
+
330
334
  errors.should_not be_empty
331
335
  errors[0].class.should == PeriodicScheduler::MissedScheduleError
332
336
  @got_events.should == [1, 2]
@@ -340,10 +344,12 @@ describe PeriodicScheduler do
340
344
  fail "test"
341
345
  end
342
346
 
343
- errors = nil
347
+ errors = []
344
348
 
345
349
  lambda {
346
- errors = s.run
350
+ s.run do |error|
351
+ errors << error
352
+ end
347
353
  }.should_not raise_exception
348
354
 
349
355
  errors.should have(1).error
@@ -364,6 +370,23 @@ describe PeriodicScheduler do
364
370
  s.run
365
371
  }.should raise_error PeriodicScheduler::EmptyScheduleError
366
372
  end
373
+
374
+ it "should provide array of objects returned by called shedule blocks" do
375
+ s = PeriodicScheduler.new(5.0, @options)
376
+
377
+ test = 0
378
+
379
+ s.schedule(11, true) do
380
+ test += 1
381
+ end
382
+
383
+ s.schedule(12) do
384
+ test += 1
385
+ end
386
+
387
+ s.run.should == [1, 2]
388
+ s.run.should == [3]
389
+ end
367
390
  end
368
391
 
369
392
  describe "#run!" do
metadata CHANGED
@@ -1,123 +1,90 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: periodic-scheduler
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jakub Pastuszek
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-03 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :development
22
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-02-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &22600720 !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 47
28
- segments:
29
- - 2
30
- - 8
31
- - 0
20
+ - !ruby/object:Gem::Version
32
21
  version: 2.8.0
33
- prerelease: false
34
- name: rspec
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
22
  type: :development
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 31
44
- segments:
45
- - 3
46
- - 12
47
- version: "3.12"
48
23
  prerelease: false
24
+ version_requirements: *22600720
25
+ - !ruby/object:Gem::Dependency
49
26
  name: rdoc
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- type: :development
53
- requirement: &id003 !ruby/object:Gem::Requirement
27
+ requirement: &22598880 !ruby/object:Gem::Requirement
54
28
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '3.12'
33
+ type: :development
62
34
  prerelease: false
35
+ version_requirements: *22598880
36
+ - !ruby/object:Gem::Dependency
63
37
  name: cucumber
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
38
+ requirement: &22595540 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
66
44
  type: :development
67
- requirement: &id004 !ruby/object:Gem::Requirement
45
+ prerelease: false
46
+ version_requirements: *22595540
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: &22594720 !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
51
+ requirements:
70
52
  - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 23
73
- segments:
74
- - 1
75
- - 0
76
- - 0
53
+ - !ruby/object:Gem::Version
77
54
  version: 1.0.0
78
- prerelease: false
79
- name: bundler
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
55
  type: :development
83
- requirement: &id005 !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ version_requirements: *22594720
58
+ - !ruby/object:Gem::Dependency
59
+ name: jeweler
60
+ requirement: &22593900 !ruby/object:Gem::Requirement
84
61
  none: false
85
- requirements:
62
+ requirements:
86
63
  - - ~>
87
- - !ruby/object:Gem::Version
88
- hash: 49
89
- segments:
90
- - 1
91
- - 8
92
- - 3
64
+ - !ruby/object:Gem::Version
93
65
  version: 1.8.3
94
- prerelease: false
95
- name: jeweler
96
- version_requirements: *id005
97
- - !ruby/object:Gem::Dependency
98
66
  type: :development
99
- requirement: &id006 !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
108
67
  prerelease: false
68
+ version_requirements: *22593900
69
+ - !ruby/object:Gem::Dependency
109
70
  name: rcov
110
- version_requirements: *id006
71
+ requirement: &22679440 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *22679440
111
80
  description: Controls execution of periodic scheduled tasks.
112
81
  email: jpastuszek@gmail.com
113
82
  executables: []
114
-
115
83
  extensions: []
116
-
117
- extra_rdoc_files:
84
+ extra_rdoc_files:
118
85
  - LICENSE.txt
119
86
  - README.rdoc
120
- files:
87
+ files:
121
88
  - .document
122
89
  - .rspec
123
90
  - Gemfile
@@ -132,37 +99,31 @@ files:
132
99
  - spec/periodic-scheduler_spec.rb
133
100
  - spec/spec_helper.rb
134
101
  homepage: http://github.com/jpastuszek/periodic-scheduler
135
- licenses:
102
+ licenses:
136
103
  - MIT
137
104
  post_install_message:
138
105
  rdoc_options: []
139
-
140
- require_paths:
106
+ require_paths:
141
107
  - lib
142
- required_ruby_version: !ruby/object:Gem::Requirement
108
+ required_ruby_version: !ruby/object:Gem::Requirement
143
109
  none: false
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- hash: 3
148
- segments:
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ segments:
149
115
  - 0
150
- version: "0"
151
- required_rubygems_version: !ruby/object:Gem::Requirement
116
+ hash: -208021006100365845
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
118
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
160
123
  requirements: []
161
-
162
124
  rubyforge_project:
163
- rubygems_version: 1.8.10
125
+ rubygems_version: 1.8.15
164
126
  signing_key:
165
127
  specification_version: 3
166
128
  summary: Scheduler for periodic tasks.
167
129
  test_files: []
168
-