job_boss 0.2 → 0.4
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/README.markdown +25 -2
- data/Rakefile +21 -8
- data/bin/job_boss +1 -0
- data/doc/ActiveSupport/TestCase.html +584 -0
- data/doc/{Passenger.html → ActiveSupport.html} +10 -30
- data/doc/CreateJobs.html +31 -16
- data/doc/{Mongrel.html → DaemonTest.html} +23 -39
- data/doc/JobBoss/Boss.html +466 -68
- data/doc/JobBoss/Config.html +77 -39
- data/doc/JobBoss/Job.html +375 -97
- data/doc/JobBoss/Queuer.html +35 -21
- data/doc/JobBoss.html +14 -311
- data/doc/{ActiveRecord.html → MathJobs.html} +66 -36
- data/doc/Rakefile.html +43 -9
- data/doc/SleepJobs.html +251 -0
- data/doc/{PhusionPassenger.html → StringJobs.html} +66 -38
- data/doc/bin/job_boss.html +1 -1
- data/doc/created.rid +14 -8
- data/doc/index.html +63 -7
- data/doc/lib/job_boss/boss_rb.html +5 -1
- data/doc/lib/job_boss/{configuror_rb.html → config_rb.html} +2 -2
- data/doc/lib/job_boss/job_rb.html +3 -1
- data/doc/lib/job_boss/queuer_rb.html +1 -1
- data/doc/lib/migrate_rb.html +1 -1
- data/doc/{vendor/spawn/lib/spawn_rb.html → test/app_root/app/jobs/math_jobs_rb.html} +7 -7
- data/doc/{vendor/spawn/lib/patches_rb.html → test/app_root/app/jobs/sleep_jobs_rb.html} +8 -12
- data/doc/test/app_root/app/jobs/string_jobs_rb.html +52 -0
- data/doc/test/test_helper_rb.html +62 -0
- data/doc/{vendor/spawn/init_rb.html → test/unit/daemon_test_rb.html} +3 -3
- data/doc/test/unit/job_test_rb.html +60 -0
- data/job_boss.gemspec +3 -2
- data/lib/job_boss/boss.rb +29 -7
- data/lib/job_boss/config.rb +49 -0
- data/lib/job_boss/job.rb +57 -13
- data/lib/migrate.rb +3 -1
- data/test/app_root/app/jobs/math_jobs.rb +5 -0
- data/test/app_root/app/jobs/sleep_jobs.rb +9 -0
- data/test/app_root/app/jobs/string_jobs.rb +5 -0
- data/test/app_root/config/database.yml +22 -0
- data/test/test_helper.rb +113 -0
- data/test/unit/daemon_test.rb +29 -0
- data/test/unit/job_test.rb +73 -0
- metadata +46 -27
- data/doc/ActiveRecord/Base.html +0 -343
- data/doc/Mongrel/HttpServer.html +0 -275
- data/doc/Passenger/Railz/RequestHandler.html +0 -271
- data/doc/Passenger/Railz.html +0 -185
- data/doc/PhusionPassenger/Rack/RequestHandler.html +0 -271
- data/doc/PhusionPassenger/Rack.html +0 -185
- data/doc/PhusionPassenger/Railz/RequestHandler.html +0 -271
- data/doc/PhusionPassenger/Railz.html +0 -185
- data/doc/Spawn/SpawnId.html +0 -276
- data/doc/Spawn.html +0 -742
- data/doc/vendor/spawn/CHANGELOG.html +0 -275
- data/doc/vendor/spawn/LICENSE.html +0 -151
- data/lib/job_boss/configuror.rb +0 -40
data/doc/JobBoss/Boss.html
CHANGED
@@ -71,10 +71,28 @@
|
|
71
71
|
|
72
72
|
<li><a href="#method-c-config">::config</a></li>
|
73
73
|
|
74
|
+
<li><a href="#method-c-logger">::logger</a></li>
|
75
|
+
|
74
76
|
<li><a href="#method-c-new">::new</a></li>
|
75
77
|
|
76
78
|
<li><a href="#method-c-queue">::queue</a></li>
|
77
79
|
|
80
|
+
<li><a href="#method-c-resolve_path">::resolve_path</a></li>
|
81
|
+
|
82
|
+
<li><a href="#method-i-available_employees">#available_employees</a></li>
|
83
|
+
|
84
|
+
<li><a href="#method-i-cleanup_running_jobs">#cleanup_running_jobs</a></li>
|
85
|
+
|
86
|
+
<li><a href="#method-i-establish_active_record_connection">#establish_active_record_connection</a></li>
|
87
|
+
|
88
|
+
<li><a href="#method-i-kill_job">#kill_job</a></li>
|
89
|
+
|
90
|
+
<li><a href="#method-i-migrate">#migrate</a></li>
|
91
|
+
|
92
|
+
<li><a href="#method-i-require_job_classes">#require_job_classes</a></li>
|
93
|
+
|
94
|
+
<li><a href="#method-i-shutdown_running_jobs">#shutdown_running_jobs</a></li>
|
95
|
+
|
78
96
|
<li><a href="#method-i-start">#start</a></li>
|
79
97
|
|
80
98
|
<li><a href="#method-i-stop">#stop</a></li>
|
@@ -125,8 +143,20 @@
|
|
125
143
|
|
126
144
|
<li><a href="../JobBoss/Queuer.html">JobBoss::Queuer</a></li>
|
127
145
|
|
146
|
+
<li><a href="../ActiveSupport.html">ActiveSupport</a></li>
|
147
|
+
|
148
|
+
<li><a href="../ActiveSupport/TestCase.html">ActiveSupport::TestCase</a></li>
|
149
|
+
|
128
150
|
<li><a href="../CreateJobs.html">CreateJobs</a></li>
|
129
151
|
|
152
|
+
<li><a href="../DaemonTest.html">DaemonTest</a></li>
|
153
|
+
|
154
|
+
<li><a href="../MathJobs.html">MathJobs</a></li>
|
155
|
+
|
156
|
+
<li><a href="../SleepJobs.html">SleepJobs</a></li>
|
157
|
+
|
158
|
+
<li><a href="../StringJobs.html">StringJobs</a></li>
|
159
|
+
|
130
160
|
</ul>
|
131
161
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
132
162
|
</div>
|
@@ -178,11 +208,48 @@ Used to set <a href="Boss.html">Boss</a> configuration Usage:
|
|
178
208
|
<div class="method-source-code"
|
179
209
|
id="config-source">
|
180
210
|
<pre>
|
181
|
-
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
211
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 10</span>
|
212
|
+
10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">config</span>
|
213
|
+
11: <span class="ruby-identifier">require</span> <span class="ruby-value str">'job_boss/config'</span>
|
214
|
+
12: <span class="ruby-identifier">@@config</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Config</span>.<span class="ruby-identifier">new</span>
|
215
|
+
13: <span class="ruby-keyword kw">end</span></pre>
|
216
|
+
</div>
|
217
|
+
|
218
|
+
</div>
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
</div>
|
224
|
+
|
225
|
+
|
226
|
+
<div id="logger-method" class="method-detail ">
|
227
|
+
<a name="method-c-logger"></a>
|
228
|
+
|
229
|
+
<div class="method-heading">
|
230
|
+
|
231
|
+
<span class="method-name">logger</span><span
|
232
|
+
class="method-args">()</span>
|
233
|
+
<span class="method-click-advice">click to toggle source</span>
|
234
|
+
|
235
|
+
</div>
|
236
|
+
|
237
|
+
<div class="method-description">
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
<div class="method-source-code"
|
244
|
+
id="logger-source">
|
245
|
+
<pre>
|
246
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 23</span>
|
247
|
+
23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">logger</span>
|
248
|
+
24: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">log_path</span> = <span class="ruby-identifier">resolve_path</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">log_path</span>)
|
249
|
+
25:
|
250
|
+
26: <span class="ruby-identifier">require</span> <span class="ruby-value str">'logger'</span>
|
251
|
+
27: <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">log_path</span>)
|
252
|
+
28: <span class="ruby-keyword kw">end</span></pre>
|
186
253
|
</div>
|
187
254
|
|
188
255
|
</div>
|
@@ -213,16 +280,16 @@ Used to set <a href="Boss.html">Boss</a> configuration Usage:
|
|
213
280
|
<div class="method-source-code"
|
214
281
|
id="new-source">
|
215
282
|
<pre>
|
216
|
-
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
283
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 41</span>
|
284
|
+
41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span> = {})
|
285
|
+
42: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">application_root</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:working_dir</span>]
|
286
|
+
43: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">sleep_interval</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:sleep_interval</span>]
|
287
|
+
44: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">employee_limit</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:employee_limit</span>]
|
288
|
+
45: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">database_yaml_path</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:database_yaml_path</span>]
|
289
|
+
46: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">jobs_path</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:jobs_path</span>]
|
290
|
+
47:
|
291
|
+
48: <span class="ruby-ivar">@running_jobs</span> = []
|
292
|
+
49: <span class="ruby-keyword kw">end</span></pre>
|
226
293
|
</div>
|
227
294
|
|
228
295
|
</div>
|
@@ -257,11 +324,52 @@ Used to queue jobs Usage:
|
|
257
324
|
<div class="method-source-code"
|
258
325
|
id="queue-source">
|
259
326
|
<pre>
|
260
|
-
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
327
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 18</span>
|
328
|
+
18: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">queue</span>
|
329
|
+
19: <span class="ruby-identifier">require</span> <span class="ruby-value str">'job_boss/queuer'</span>
|
330
|
+
20: <span class="ruby-identifier">@@queuer</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Queuer</span>.<span class="ruby-identifier">new</span>
|
331
|
+
21: <span class="ruby-keyword kw">end</span></pre>
|
332
|
+
</div>
|
333
|
+
|
334
|
+
</div>
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
</div>
|
340
|
+
|
341
|
+
|
342
|
+
<div id="resolve-path-method" class="method-detail ">
|
343
|
+
<a name="method-c-resolve_path"></a>
|
344
|
+
|
345
|
+
<div class="method-heading">
|
346
|
+
|
347
|
+
<span class="method-name">resolve_path</span><span
|
348
|
+
class="method-args">(path)</span>
|
349
|
+
<span class="method-click-advice">click to toggle source</span>
|
350
|
+
|
351
|
+
</div>
|
352
|
+
|
353
|
+
<div class="method-description">
|
354
|
+
|
355
|
+
<p>
|
356
|
+
If path starts with ’/’, leave alone. Otherwise, prepend
|
357
|
+
application_root
|
358
|
+
</p>
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
<div class="method-source-code"
|
363
|
+
id="resolve-path-source">
|
364
|
+
<pre>
|
365
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 32</span>
|
366
|
+
32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolve_path</span>(<span class="ruby-identifier">path</span>)
|
367
|
+
33: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">path</span> <span class="ruby-operator">==</span> <span class="ruby-value">//</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/^#{@@config.application_root}/</span>)
|
368
|
+
34: <span class="ruby-identifier">path</span>
|
369
|
+
35: <span class="ruby-keyword kw">else</span>
|
370
|
+
36: <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">application_root</span>, <span class="ruby-identifier">path</span>)
|
371
|
+
37: <span class="ruby-keyword kw">end</span>
|
372
|
+
38: <span class="ruby-keyword kw">end</span></pre>
|
265
373
|
</div>
|
266
374
|
|
267
375
|
</div>
|
@@ -300,48 +408,50 @@ Start the boss
|
|
300
408
|
<div class="method-source-code"
|
301
409
|
id="start-source">
|
302
410
|
<pre>
|
303
|
-
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
39:
|
312
|
-
40: <span class="ruby-identifier">require</span> <span class="ruby-value str">'job_boss/job'</span>
|
313
|
-
41:
|
314
|
-
42: <span class="ruby-identifier">migrate</span>
|
315
|
-
43:
|
316
|
-
44: <span class="ruby-constant">Signal</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">"HUP"</span>) <span class="ruby-keyword kw">do</span>
|
317
|
-
45: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">stop</span>
|
318
|
-
46: <span class="ruby-keyword kw">end</span>
|
319
|
-
47:
|
320
|
-
48: <span class="ruby-identifier">at_exit</span> <span class="ruby-keyword kw">do</span>
|
321
|
-
49: <span class="ruby-identifier">stop</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span> <span class="ruby-operator">==</span> <span class="ruby-constant">BOSS_PID</span>
|
322
|
-
50: <span class="ruby-keyword kw">end</span>
|
323
|
-
51:
|
324
|
-
52: <span class="ruby-identifier">puts</span> <span class="ruby-value str">"Job Boss started"</span>
|
325
|
-
53:
|
326
|
-
54: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
|
327
|
-
55: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">children_count</span> = <span class="ruby-identifier">available_employees</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
328
|
-
56: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">sleep_interval</span>)
|
329
|
-
57: <span class="ruby-keyword kw">next</span>
|
330
|
-
58: <span class="ruby-keyword kw">end</span>
|
411
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 52</span>
|
412
|
+
52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
|
413
|
+
53: <span class="ruby-identifier">require</span> <span class="ruby-value str">'active_record'</span>
|
414
|
+
54: <span class="ruby-identifier">require</span> <span class="ruby-value str">'yaml'</span>
|
415
|
+
55:
|
416
|
+
56: <span class="ruby-identifier">establish_active_record_connection</span>
|
417
|
+
57:
|
418
|
+
58: <span class="ruby-identifier">require_job_classes</span>
|
331
419
|
59:
|
332
|
-
60:
|
333
|
-
61:
|
334
|
-
62:
|
420
|
+
60: <span class="ruby-identifier">require</span> <span class="ruby-value str">'job_boss/job'</span>
|
421
|
+
61:
|
422
|
+
62: <span class="ruby-identifier">migrate</span>
|
335
423
|
63:
|
336
|
-
64:
|
337
|
-
65:
|
338
|
-
66:
|
339
|
-
67:
|
340
|
-
68:
|
341
|
-
69: <span class="ruby-keyword kw">
|
342
|
-
70:
|
343
|
-
71:
|
344
|
-
72:
|
424
|
+
64: <span class="ruby-constant">Signal</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">"HUP"</span>) <span class="ruby-keyword kw">do</span>
|
425
|
+
65: <span class="ruby-identifier">stop</span>
|
426
|
+
66: <span class="ruby-keyword kw">end</span>
|
427
|
+
67:
|
428
|
+
68: <span class="ruby-identifier">at_exit</span> <span class="ruby-keyword kw">do</span>
|
429
|
+
69: <span class="ruby-identifier">stop</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span> <span class="ruby-operator">==</span> <span class="ruby-constant">BOSS_PID</span>
|
430
|
+
70: <span class="ruby-keyword kw">end</span>
|
431
|
+
71:
|
432
|
+
72: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">"Job Boss started"</span>
|
433
|
+
73:
|
434
|
+
74: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
|
435
|
+
75: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">children_count</span> = <span class="ruby-identifier">available_employees</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
436
|
+
76: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">sleep_interval</span>)
|
437
|
+
77: <span class="ruby-keyword kw">next</span>
|
438
|
+
78: <span class="ruby-keyword kw">end</span>
|
439
|
+
79:
|
440
|
+
80: <span class="ruby-comment cmt"># Go through each pending path so that we don't get stuck just processing</span>
|
441
|
+
81: <span class="ruby-comment cmt"># long running jobs which would leave quicker jobs to suffocate</span>
|
442
|
+
82: <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending_paths</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
|
443
|
+
83: <span class="ruby-identifier">job</span> = <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">find_by_path</span>(<span class="ruby-identifier">path</span>)
|
444
|
+
84: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">job</span>.<span class="ruby-identifier">nil?</span>
|
445
|
+
85:
|
446
|
+
86: <span class="ruby-identifier">job</span>.<span class="ruby-identifier">dispatch</span>
|
447
|
+
87: <span class="ruby-ivar">@running_jobs</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">job</span>
|
448
|
+
88:
|
449
|
+
89: <span class="ruby-identifier">children_count</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
450
|
+
90: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">children_count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
451
|
+
91: <span class="ruby-keyword kw">end</span>
|
452
|
+
92:
|
453
|
+
93: <span class="ruby-keyword kw">end</span>
|
454
|
+
94: <span class="ruby-keyword kw">end</span></pre>
|
345
455
|
</div>
|
346
456
|
|
347
457
|
</div>
|
@@ -372,14 +482,302 @@ Start the boss
|
|
372
482
|
<div class="method-source-code"
|
373
483
|
id="stop-source">
|
374
484
|
<pre>
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
485
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 96</span>
|
486
|
+
96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
|
487
|
+
97: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">"Stopping #{@running_jobs.size} running employees..."</span>
|
488
|
+
98:
|
489
|
+
99: <span class="ruby-identifier">shutdown_running_jobs</span>
|
490
|
+
100:
|
491
|
+
101: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">"Job Boss stopped"</span>
|
492
|
+
102: <span class="ruby-keyword kw">end</span></pre>
|
493
|
+
</div>
|
494
|
+
|
495
|
+
</div>
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
|
500
|
+
</div>
|
501
|
+
|
502
|
+
|
503
|
+
</div>
|
504
|
+
|
505
|
+
<div id="private-instance-method-details" class="method-section section">
|
506
|
+
<h3 class="section-header">Private Instance Methods</h3>
|
507
|
+
|
508
|
+
|
509
|
+
<div id="available-employees-method" class="method-detail ">
|
510
|
+
<a name="method-i-available_employees"></a>
|
511
|
+
|
512
|
+
<div class="method-heading">
|
513
|
+
|
514
|
+
<span class="method-name">available_employees</span><span
|
515
|
+
class="method-args">()</span>
|
516
|
+
<span class="method-click-advice">click to toggle source</span>
|
517
|
+
|
518
|
+
</div>
|
519
|
+
|
520
|
+
<div class="method-description">
|
521
|
+
|
522
|
+
<p>
|
523
|
+
Total number of employees which can be run
|
524
|
+
</p>
|
525
|
+
|
526
|
+
|
527
|
+
|
528
|
+
<div class="method-source-code"
|
529
|
+
id="available-employees-source">
|
530
|
+
<pre>
|
531
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 127</span>
|
532
|
+
127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">available_employees</span>
|
533
|
+
128: <span class="ruby-identifier">cleanup_running_jobs</span>
|
534
|
+
129:
|
535
|
+
130: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">employee_limit</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@running_jobs</span>.<span class="ruby-identifier">size</span>
|
536
|
+
131: <span class="ruby-keyword kw">end</span></pre>
|
537
|
+
</div>
|
538
|
+
|
539
|
+
</div>
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
</div>
|
545
|
+
|
546
|
+
|
547
|
+
<div id="cleanup-running-jobs-method" class="method-detail ">
|
548
|
+
<a name="method-i-cleanup_running_jobs"></a>
|
549
|
+
|
550
|
+
<div class="method-heading">
|
551
|
+
|
552
|
+
<span class="method-name">cleanup_running_jobs</span><span
|
553
|
+
class="method-args">()</span>
|
554
|
+
<span class="method-click-advice">click to toggle source</span>
|
555
|
+
|
556
|
+
</div>
|
557
|
+
|
558
|
+
<div class="method-description">
|
559
|
+
|
560
|
+
<p>
|
561
|
+
Cleans up @running_jobs variable, getting rid of jobs which have completed,
|
562
|
+
which have been cancelled, or which went MIA
|
563
|
+
</p>
|
564
|
+
|
565
|
+
|
566
|
+
|
567
|
+
<div class="method-source-code"
|
568
|
+
id="cleanup-running-jobs-source">
|
569
|
+
<pre>
|
570
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 107</span>
|
571
|
+
107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup_running_jobs</span>
|
572
|
+
108: <span class="ruby-constant">Job</span>.<span class="ruby-identifier">uncached</span> <span class="ruby-keyword kw">do</span>
|
573
|
+
109: <span class="ruby-ivar">@running_jobs</span> = <span class="ruby-constant">Job</span>.<span class="ruby-identifier">running</span>.<span class="ruby-identifier">where</span>(<span class="ruby-value str">'id in (?)'</span>, <span class="ruby-ivar">@running_jobs</span>)
|
574
|
+
110:
|
575
|
+
111: <span class="ruby-identifier">cancelled_jobs</span> = <span class="ruby-ivar">@running_jobs</span>.<span class="ruby-identifier">select</span>(&<span class="ruby-value">:cancelled?</span>)
|
576
|
+
112: <span class="ruby-identifier">cancelled_jobs</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">job</span><span class="ruby-operator">|</span> <span class="ruby-identifier">kill_job</span>(<span class="ruby-identifier">job</span>) }
|
577
|
+
113: <span class="ruby-ivar">@running_jobs</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">cancelled_jobs</span>
|
578
|
+
114:
|
579
|
+
115: <span class="ruby-comment cmt"># Clean out any jobs whos processes have stopped running for some reason</span>
|
580
|
+
116: <span class="ruby-ivar">@running_jobs</span> = <span class="ruby-ivar">@running_jobs</span>.<span class="ruby-identifier">select</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span><span class="ruby-operator">|</span>
|
581
|
+
117: <span class="ruby-keyword kw">begin</span>
|
582
|
+
118: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">job</span>.<span class="ruby-identifier">employee_pid</span>.<span class="ruby-identifier">to_i</span>)
|
583
|
+
119: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
|
584
|
+
120: <span class="ruby-keyword kw">nil</span>
|
585
|
+
121: <span class="ruby-keyword kw">end</span>
|
586
|
+
122: <span class="ruby-keyword kw">end</span>
|
587
|
+
123: <span class="ruby-keyword kw">end</span>
|
588
|
+
124: <span class="ruby-keyword kw">end</span></pre>
|
589
|
+
</div>
|
590
|
+
|
591
|
+
</div>
|
592
|
+
|
593
|
+
|
594
|
+
|
595
|
+
|
596
|
+
</div>
|
597
|
+
|
598
|
+
|
599
|
+
<div id="establish-active-record-connection-method" class="method-detail ">
|
600
|
+
<a name="method-i-establish_active_record_connection"></a>
|
601
|
+
|
602
|
+
<div class="method-heading">
|
603
|
+
|
604
|
+
<span class="method-name">establish_active_record_connection</span><span
|
605
|
+
class="method-args">()</span>
|
606
|
+
<span class="method-click-advice">click to toggle source</span>
|
607
|
+
|
608
|
+
</div>
|
609
|
+
|
610
|
+
<div class="method-description">
|
611
|
+
|
612
|
+
|
613
|
+
|
614
|
+
|
615
|
+
|
616
|
+
<div class="method-source-code"
|
617
|
+
id="establish-active-record-connection-source">
|
618
|
+
<pre>
|
619
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 133</span>
|
620
|
+
133: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">establish_active_record_connection</span>
|
621
|
+
134: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">database_yaml_path</span> = <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">resolve_path</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">database_yaml_path</span>)
|
622
|
+
135:
|
623
|
+
136: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Database YAML file missing (#{@@config.database_yaml_path})"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">database_yaml_path</span>)
|
624
|
+
137:
|
625
|
+
138: <span class="ruby-identifier">config</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">database_yaml_path</span>))
|
626
|
+
139:
|
627
|
+
140: <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">establish_connection</span>(<span class="ruby-identifier">config</span>[<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">environment</span>])
|
628
|
+
141: <span class="ruby-keyword kw">end</span></pre>
|
629
|
+
</div>
|
630
|
+
|
631
|
+
</div>
|
632
|
+
|
633
|
+
|
634
|
+
|
635
|
+
|
636
|
+
</div>
|
637
|
+
|
638
|
+
|
639
|
+
<div id="kill-job-method" class="method-detail ">
|
640
|
+
<a name="method-i-kill_job"></a>
|
641
|
+
|
642
|
+
<div class="method-heading">
|
643
|
+
|
644
|
+
<span class="method-name">kill_job</span><span
|
645
|
+
class="method-args">(job)</span>
|
646
|
+
<span class="method-click-advice">click to toggle source</span>
|
647
|
+
|
648
|
+
</div>
|
649
|
+
|
650
|
+
<div class="method-description">
|
651
|
+
|
652
|
+
|
653
|
+
|
654
|
+
|
655
|
+
|
656
|
+
<div class="method-source-code"
|
657
|
+
id="kill-job-source">
|
658
|
+
<pre>
|
659
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 158</span>
|
660
|
+
158: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">kill_job</span>(<span class="ruby-identifier">job</span>)
|
661
|
+
159: <span class="ruby-keyword kw">begin</span>
|
662
|
+
160: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value str">"HUP"</span>, <span class="ruby-identifier">job</span>.<span class="ruby-identifier">employee_pid</span>.<span class="ruby-identifier">to_i</span>)
|
663
|
+
161: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
|
664
|
+
162: <span class="ruby-keyword kw">nil</span>
|
665
|
+
163: <span class="ruby-keyword kw">end</span>
|
666
|
+
164: <span class="ruby-keyword kw">end</span></pre>
|
667
|
+
</div>
|
668
|
+
|
669
|
+
</div>
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
|
674
|
+
</div>
|
675
|
+
|
676
|
+
|
677
|
+
<div id="migrate-method" class="method-detail ">
|
678
|
+
<a name="method-i-migrate"></a>
|
679
|
+
|
680
|
+
<div class="method-heading">
|
681
|
+
|
682
|
+
<span class="method-name">migrate</span><span
|
683
|
+
class="method-args">()</span>
|
684
|
+
<span class="method-click-advice">click to toggle source</span>
|
685
|
+
|
686
|
+
</div>
|
687
|
+
|
688
|
+
<div class="method-description">
|
689
|
+
|
690
|
+
|
691
|
+
|
692
|
+
|
693
|
+
|
694
|
+
<div class="method-source-code"
|
695
|
+
id="migrate-source">
|
696
|
+
<pre>
|
697
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 151</span>
|
698
|
+
151: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">migrate</span>
|
699
|
+
152: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">table_exists?</span>
|
700
|
+
153: <span class="ruby-identifier">require</span> <span class="ruby-value str">'migrate'</span>
|
701
|
+
154: <span class="ruby-constant">CreateJobs</span>.<span class="ruby-identifier">up</span>
|
702
|
+
155: <span class="ruby-keyword kw">end</span>
|
703
|
+
156: <span class="ruby-keyword kw">end</span></pre>
|
704
|
+
</div>
|
705
|
+
|
706
|
+
</div>
|
707
|
+
|
708
|
+
|
709
|
+
|
710
|
+
|
711
|
+
</div>
|
712
|
+
|
713
|
+
|
714
|
+
<div id="require-job-classes-method" class="method-detail ">
|
715
|
+
<a name="method-i-require_job_classes"></a>
|
716
|
+
|
717
|
+
<div class="method-heading">
|
718
|
+
|
719
|
+
<span class="method-name">require_job_classes</span><span
|
720
|
+
class="method-args">()</span>
|
721
|
+
<span class="method-click-advice">click to toggle source</span>
|
722
|
+
|
723
|
+
</div>
|
724
|
+
|
725
|
+
<div class="method-description">
|
726
|
+
|
727
|
+
|
728
|
+
|
729
|
+
|
730
|
+
|
731
|
+
<div class="method-source-code"
|
732
|
+
id="require-job-classes-source">
|
733
|
+
<pre>
|
734
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 143</span>
|
735
|
+
143: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">require_job_classes</span>
|
736
|
+
144: <span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">jobs_path</span> = <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">resolve_path</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">jobs_path</span>)
|
737
|
+
145:
|
738
|
+
146: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Jobs path missing (#{@@config.jobs_path})"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">jobs_path</span>)
|
739
|
+
147:
|
740
|
+
148: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">jobs_path</span>, <span class="ruby-value str">'*.rb'</span>)).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">job_class</span><span class="ruby-operator">|</span> <span class="ruby-identifier">require</span> <span class="ruby-identifier">job_class</span> }
|
741
|
+
149: <span class="ruby-keyword kw">end</span></pre>
|
742
|
+
</div>
|
743
|
+
|
744
|
+
</div>
|
745
|
+
|
746
|
+
|
747
|
+
|
748
|
+
|
749
|
+
</div>
|
750
|
+
|
751
|
+
|
752
|
+
<div id="shutdown-running-jobs-method" class="method-detail ">
|
753
|
+
<a name="method-i-shutdown_running_jobs"></a>
|
754
|
+
|
755
|
+
<div class="method-heading">
|
756
|
+
|
757
|
+
<span class="method-name">shutdown_running_jobs</span><span
|
758
|
+
class="method-args">()</span>
|
759
|
+
<span class="method-click-advice">click to toggle source</span>
|
760
|
+
|
761
|
+
</div>
|
762
|
+
|
763
|
+
<div class="method-description">
|
764
|
+
|
765
|
+
|
766
|
+
|
767
|
+
|
768
|
+
|
769
|
+
<div class="method-source-code"
|
770
|
+
id="shutdown-running-jobs-source">
|
771
|
+
<pre>
|
772
|
+
<span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 166</span>
|
773
|
+
166: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shutdown_running_jobs</span>
|
774
|
+
167: <span class="ruby-identifier">cleanup_running_jobs</span>
|
775
|
+
168:
|
776
|
+
169: <span class="ruby-ivar">@running_jobs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span><span class="ruby-operator">|</span>
|
777
|
+
170: <span class="ruby-identifier">kill_job</span>(<span class="ruby-identifier">job</span>)
|
778
|
+
171: <span class="ruby-identifier">job</span>.<span class="ruby-identifier">mark_for_redo</span>
|
779
|
+
172: <span class="ruby-keyword kw">end</span>
|
780
|
+
173: <span class="ruby-keyword kw">end</span></pre>
|
383
781
|
</div>
|
384
782
|
|
385
783
|
</div>
|