rufus-scheduler 2.0.14 → 2.0.15

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -2,6 +2,11 @@
2
2
  = rufus-scheduler CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-scheduler - 2.0.15 released 2011/12/20
6
+
7
+ - Scheduler#running_jobs (Thanks Louis Coilliot)
8
+
9
+
5
10
  == rufus-scheduler - 2.0.14 released 2011/12/11
6
11
 
7
12
  - Job #pause and #resume
data/CREDITS.txt CHANGED
@@ -15,6 +15,7 @@
15
15
 
16
16
  == Feedback
17
17
 
18
+ - Louis Coilliot - Scheduler#running_jobs
18
19
  - Henrique G. Testa - pause/resume concept
19
20
  - Sam Gibson - https://github.com/samfoo - exception handling hardening
20
21
  - sha1dy - https://github.com/sha1dy - every and overlapping exception issue
data/README.rdoc CHANGED
@@ -338,6 +338,13 @@ As said, the scheduler has a #pause(job_or_job_id) and a #resume(job_or_job_id)
338
338
  scheduler.resume(job_id)
339
339
 
340
340
 
341
+ == Scheduler#running_jobs
342
+
343
+ One can get a list of the jobs just triggered (actually running) by doing
344
+
345
+ jobs = scheduler.running_jobs
346
+
347
+
341
348
  == schedulables
342
349
 
343
350
  Sometimes passing a block isn't that convenient :
data/lib/rufus/sc/jobs.rb CHANGED
@@ -177,9 +177,11 @@ module Scheduler
177
177
  # (Only jobs know about this method of the scheduler)
178
178
 
179
179
  job_thread = Thread.current
180
+
180
181
  job_thread[
181
182
  "rufus_scheduler__trigger_thread__#{@scheduler.object_id}"
182
- ] = true
183
+ ] = self
184
+
183
185
  @last_job_thread = job_thread
184
186
 
185
187
  begin
@@ -313,10 +313,20 @@ module Rufus::Scheduler
313
313
  def trigger_threads
314
314
 
315
315
  Thread.list.select { |t|
316
- t["rufus_scheduler__trigger_thread__#{self.object_id}"] == true
316
+ t["rufus_scheduler__trigger_thread__#{self.object_id}"]
317
317
  }
318
318
  end
319
319
 
320
+ # Returns the list of the currently running jobs (jobs that just got
321
+ # triggered and are executing).
322
+ #
323
+ def running_jobs
324
+
325
+ Thread.list.collect { |t|
326
+ t["rufus_scheduler__trigger_thread__#{self.object_id}"]
327
+ }.compact
328
+ end
329
+
320
330
  protected
321
331
 
322
332
  # Returns a job queue instance.
@@ -26,7 +26,7 @@
26
26
  module Rufus
27
27
  module Scheduler
28
28
 
29
- VERSION = '2.0.14'
29
+ VERSION = '2.0.15'
30
30
  end
31
31
  end
32
32
 
@@ -156,6 +156,50 @@ describe SCHEDULER_CLASS do
156
156
  end
157
157
  end
158
158
  end
159
+
160
+ context 'trigger threads' do
161
+
162
+ before(:each) do
163
+ @s = start_scheduler
164
+ end
165
+ after(:each) do
166
+ stop_scheduler(@s)
167
+ end
168
+
169
+ describe '#trigger_threads' do
170
+
171
+ it 'returns an empty list when no jobs are running' do
172
+
173
+ @s.trigger_threads.should == []
174
+ end
175
+
176
+ it 'returns a list of the threads of the running jobs' do
177
+
178
+ @s.in('100') { sleep 10 }
179
+
180
+ sleep 0.5
181
+
182
+ @s.trigger_threads.collect { |e| e.class }.should == [ Thread ]
183
+ end
184
+ end
185
+
186
+ describe '#running_jobs' do
187
+
188
+ it 'returns an empty list when no jobs are running' do
189
+
190
+ @s.running_jobs.should == []
191
+ end
192
+
193
+ it 'returns a list of the currently running jobs' do
194
+
195
+ job = @s.in('100') { sleep 10 }
196
+
197
+ sleep 0.5
198
+
199
+ @s.running_jobs.should == [ job ]
200
+ end
201
+ end
202
+ end
159
203
  end
160
204
 
161
205
  describe 'Rufus::Scheduler#start_new' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufus-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.14
4
+ version: 2.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-11 00:00:00.000000000 +09:00
12
+ date: 2011-12-20 00:00:00.000000000 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: tzinfo
17
- requirement: &2160139540 !ruby/object:Gem::Requirement
17
+ requirement: &2156163440 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.3.23
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2160139540
25
+ version_requirements: *2156163440
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
- requirement: &2160138880 !ruby/object:Gem::Requirement
28
+ requirement: &2156163000 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2160138880
36
+ version_requirements: *2156163000
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &2160138220 !ruby/object:Gem::Requirement
39
+ requirement: &2156162340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 2.7.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2160138220
47
+ version_requirements: *2156162340
48
48
  description: job scheduler for Ruby (at, cron, in and every jobs).
49
49
  email:
50
50
  - jmettraux@gmail.com