rufus-scheduler 2.0.14 → 2.0.15

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/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