job_boss 0.5.0 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/README.markdown +39 -7
  2. data/bin/job_boss +4 -2
  3. data/doc/ActiveSupport/TestCase.html +106 -87
  4. data/doc/ActiveSupport.html +6 -0
  5. data/doc/CreateJobs.html +17 -5
  6. data/doc/DaemonTest.html +6 -0
  7. data/doc/Gemfile.html +128 -0
  8. data/doc/JobBoss/Boss.html +193 -144
  9. data/doc/JobBoss/Config.html +8 -2
  10. data/doc/JobBoss/Job.html +224 -166
  11. data/doc/JobBoss/Queuer.html +25 -11
  12. data/doc/JobBoss.html +9 -0
  13. data/doc/MIT-LICENSE.html +137 -0
  14. data/doc/MathJobs.html +6 -0
  15. data/doc/Penguin.html +223 -0
  16. data/doc/Rakefile.html +6 -0
  17. data/doc/SleepJobs.html +6 -0
  18. data/doc/StringJobs.html +7 -1
  19. data/doc/bin/job_boss.html +3 -1
  20. data/doc/created.rid +17 -11
  21. data/doc/images/brick.png +0 -0
  22. data/doc/images/brick_link.png +0 -0
  23. data/doc/images/bug.png +0 -0
  24. data/doc/images/bullet_black.png +0 -0
  25. data/doc/images/bullet_toggle_minus.png +0 -0
  26. data/doc/images/bullet_toggle_plus.png +0 -0
  27. data/doc/images/date.png +0 -0
  28. data/doc/images/find.png +0 -0
  29. data/doc/images/loadingAnimation.gif +0 -0
  30. data/doc/images/macFFBgHack.png +0 -0
  31. data/doc/images/package.png +0 -0
  32. data/doc/images/page_green.png +0 -0
  33. data/doc/images/page_white_text.png +0 -0
  34. data/doc/images/page_white_width.png +0 -0
  35. data/doc/images/plugin.png +0 -0
  36. data/doc/images/ruby.png +0 -0
  37. data/doc/images/tag_green.png +0 -0
  38. data/doc/images/wrench.png +0 -0
  39. data/doc/images/wrench_orange.png +0 -0
  40. data/doc/images/zoom.png +0 -0
  41. data/doc/index.html +12 -0
  42. data/doc/init_rb.html +54 -0
  43. data/doc/js/darkfish.js +116 -0
  44. data/doc/js/jquery.js +32 -0
  45. data/doc/js/quicksearch.js +114 -0
  46. data/doc/js/thickbox-compressed.js +10 -0
  47. data/doc/lib/job_boss/boss_rb.html +1 -1
  48. data/doc/lib/job_boss/config_rb.html +1 -1
  49. data/doc/lib/job_boss/job_rb.html +1 -1
  50. data/doc/lib/job_boss/queuer_rb.html +1 -1
  51. data/doc/lib/job_boss_rb.html +56 -0
  52. data/doc/lib/migrate_rb.html +1 -1
  53. data/doc/test/app_root/app/jobs/string_jobs_rb.html +1 -1
  54. data/doc/test/app_root/app/models/penguin_rb.html +52 -0
  55. data/doc/test/app_root/config/environment_rb.html +56 -0
  56. data/doc/test/test_helper_rb.html +3 -1
  57. data/doc/test/unit/job_test_rb.html +2 -4
  58. data/job_boss.gemspec +1 -1
  59. data/lib/job_boss/config.rb +2 -2
  60. data/lib/job_boss/job.rb +22 -2
  61. data/lib/job_boss/queuer.rb +10 -2
  62. data/lib/migrate.rb +6 -0
  63. data/test/app_root/app/models/penguin.rb +9 -0
  64. data/test/app_root/config/database.yml +3 -3
  65. data/test/app_root/config/environment.rb +3 -0
  66. data/test/test_helper.rb +6 -4
  67. data/test/unit/job_test.rb +33 -17
  68. metadata +38 -9
data/doc/JobBoss/Job.html CHANGED
@@ -71,6 +71,8 @@
71
71
 
72
72
  <li><a href="#method-c-call_path">::call_path</a></li>
73
73
 
74
+ <li><a href="#method-c-delete_jobs_before">::delete_jobs_before</a></li>
75
+
74
76
  <li><a href="#method-c-pending_paths">::pending_paths</a></li>
75
77
 
76
78
  <li><a href="#method-c-result_hash">::result_hash</a></li>
@@ -124,6 +126,10 @@
124
126
  <h3 class="section-header">Files</h3>
125
127
  <ul>
126
128
 
129
+ <li class="file"><a href="../Gemfile.html">Gemfile</a></li>
130
+
131
+ <li class="file"><a href="../MIT-LICENSE.html">MIT-LICENSE</a></li>
132
+
127
133
  <li class="file"><a href="../Rakefile.html">Rakefile</a></li>
128
134
 
129
135
  </ul>
@@ -165,6 +171,8 @@
165
171
 
166
172
  <li><a href="../MathJobs.html">MathJobs</a></li>
167
173
 
174
+ <li><a href="../Penguin.html">Penguin</a></li>
175
+
168
176
  <li><a href="../SleepJobs.html">SleepJobs</a></li>
169
177
 
170
178
  <li><a href="../StringJobs.html">StringJobs</a></li>
@@ -196,6 +204,43 @@
196
204
  <h3 class="section-header">Public Class Methods</h3>
197
205
 
198
206
 
207
+ <div id="delete-jobs-before-method" class="method-detail ">
208
+ <a name="method-c-delete_jobs_before"></a>
209
+
210
+ <div class="method-heading">
211
+
212
+ <span class="method-name">delete_jobs_before</span><span
213
+ class="method-args">(time)</span>
214
+ <span class="method-click-advice">click to toggle source</span>
215
+
216
+ </div>
217
+
218
+ <div class="method-description">
219
+
220
+ <p>
221
+ Given a time object Delete all jobs which were completed earlier than that
222
+ time
223
+ </p>
224
+
225
+
226
+
227
+ <div class="method-source-code"
228
+ id="delete-jobs-before-source">
229
+ <pre>
230
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 164</span>
231
+ 164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_jobs_before</span>(<span class="ruby-identifier">time</span>)
232
+ 165: <span class="ruby-identifier">completed</span>.<span class="ruby-identifier">where</span>(<span class="ruby-value str">'completed_at &lt; ?'</span>, <span class="ruby-identifier">time</span>).<span class="ruby-identifier">delete_all</span>
233
+ 166: <span class="ruby-keyword kw">end</span></pre>
234
+ </div>
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div>
242
+
243
+
199
244
  <div id="result-hash-method" class="method-detail ">
200
245
  <a name="method-c-result_hash"></a>
201
246
 
@@ -209,26 +254,29 @@
209
254
 
210
255
  <div class="method-description">
211
256
 
212
-
257
+ <p>
258
+ Given a job or an array of jobs Returns a hash where the keys are the job
259
+ method arguments and the values are the results of the job processing
260
+ </p>
213
261
 
214
262
 
215
263
 
216
264
  <div class="method-source-code"
217
265
  id="result-hash-source">
218
266
  <pre>
219
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 140</span>
220
- 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result_hash</span>(<span class="ruby-identifier">jobs</span>)
221
- 141: <span class="ruby-identifier">jobs</span> = [<span class="ruby-identifier">jobs</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Job</span>)
222
- 142:
223
- 143: <span class="ruby-comment cmt"># the #result method automatically reloads the result here if needed but this will</span>
224
- 144: <span class="ruby-comment cmt"># do it in one SQL call</span>
225
- 145: <span class="ruby-identifier">jobs</span> = <span class="ruby-constant">Job</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:id</span>))
226
- 146:
227
- 147: <span class="ruby-identifier">require</span> <span class="ruby-value str">'yaml'</span>
228
- 148: <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">inject</span>({}) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">job</span><span class="ruby-operator">|</span>
229
- 149: <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">job</span>.<span class="ruby-identifier">args</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">job</span>.<span class="ruby-identifier">result</span>)
230
- 150: <span class="ruby-keyword kw">end</span>
231
- 151: <span class="ruby-keyword kw">end</span></pre>
267
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 149</span>
268
+ 149: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result_hash</span>(<span class="ruby-identifier">jobs</span>)
269
+ 150: <span class="ruby-identifier">jobs</span> = [<span class="ruby-identifier">jobs</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Job</span>)
270
+ 151:
271
+ 152: <span class="ruby-comment cmt"># the #result method automatically reloads the result here if needed but this will</span>
272
+ 153: <span class="ruby-comment cmt"># do it in one SQL call</span>
273
+ 154: <span class="ruby-identifier">jobs</span> = <span class="ruby-constant">Job</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:id</span>))
274
+ 155:
275
+ 156: <span class="ruby-identifier">require</span> <span class="ruby-value str">'yaml'</span>
276
+ 157: <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">inject</span>({}) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">job</span><span class="ruby-operator">|</span>
277
+ 158: <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">job</span>.<span class="ruby-identifier">args</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">job</span>.<span class="ruby-identifier">result</span>)
278
+ 159: <span class="ruby-keyword kw">end</span>
279
+ 160: <span class="ruby-keyword kw">end</span></pre>
232
280
  </div>
233
281
 
234
282
  </div>
@@ -252,24 +300,29 @@
252
300
 
253
301
  <div class="method-description">
254
302
 
255
-
303
+ <p>
304
+ Given a job or an array of jobs Will cause the process to sleep until all
305
+ specified jobs have completed sleep_interval specifies polling period
306
+ </p>
256
307
 
257
308
 
258
309
 
259
310
  <div class="method-source-code"
260
311
  id="wait-for-jobs-source">
261
312
  <pre>
262
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 129</span>
263
- 129: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait_for_jobs</span>(<span class="ruby-identifier">jobs</span>, <span class="ruby-identifier">sleep_interval</span> = <span class="ruby-value">0.5</span>)
264
- 130: <span class="ruby-identifier">jobs</span> = [<span class="ruby-identifier">jobs</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Job</span>)
265
- 131:
266
- 132: <span class="ruby-identifier">ids</span> = <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:id</span>)
267
- 133: <span class="ruby-keyword kw">until</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">completed</span>.<span class="ruby-identifier">find_all_by_id</span>(<span class="ruby-identifier">ids</span>).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">size</span>
268
- 134: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">sleep_interval</span>)
269
- 135: <span class="ruby-keyword kw">end</span>
270
- 136:
271
- 137: <span class="ruby-keyword kw">true</span>
272
- 138: <span class="ruby-keyword kw">end</span></pre>
313
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 133</span>
314
+ 133: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait_for_jobs</span>(<span class="ruby-identifier">jobs</span>, <span class="ruby-identifier">sleep_interval</span> = <span class="ruby-value">0.5</span>)
315
+ 134: <span class="ruby-identifier">jobs</span> = [<span class="ruby-identifier">jobs</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Job</span>)
316
+ 135:
317
+ 136: <span class="ruby-identifier">ids</span> = <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:id</span>)
318
+ 137: <span class="ruby-constant">Job</span>.<span class="ruby-identifier">uncached</span> <span class="ruby-keyword kw">do</span>
319
+ 138: <span class="ruby-keyword kw">until</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">completed</span>.<span class="ruby-identifier">find_all_by_id</span>(<span class="ruby-identifier">ids</span>).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">jobs</span>.<span class="ruby-identifier">size</span>
320
+ 139: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">sleep_interval</span>)
321
+ 140: <span class="ruby-keyword kw">end</span>
322
+ 141: <span class="ruby-keyword kw">end</span>
323
+ 142:
324
+ 143: <span class="ruby-keyword kw">true</span>
325
+ 144: <span class="ruby-keyword kw">end</span></pre>
273
326
  </div>
274
327
 
275
328
  </div>
@@ -306,23 +359,27 @@
306
359
  <div class="method-source-code"
307
360
  id="call-path-source">
308
361
  <pre>
309
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 181</span>
310
- 181: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call_path</span>(<span class="ruby-identifier">path</span>, *<span class="ruby-identifier">args</span>)
311
- 182: <span class="ruby-identifier">require</span> <span class="ruby-value str">'active_support'</span>
312
- 183:
313
- 184: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid path (must have #)&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/.#./</span>)
314
- 185: <span class="ruby-identifier">controller</span>, <span class="ruby-identifier">action</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'#'</span>)
315
- 186:
316
- 187: <span class="ruby-identifier">controller_object</span> = <span class="ruby-keyword kw">begin</span>
317
- 188: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-node">&quot;#{controller.classify}Jobs&quot;</span>).<span class="ruby-identifier">new</span>
318
- 189: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span>
319
- 190: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;Invalid controller&quot;</span>
320
- 191: <span class="ruby-keyword kw">end</span>
321
- 192:
322
- 193: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;Invalid path action&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">controller_object</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">action</span>)
323
- 194:
324
- 195: <span class="ruby-identifier">controller_object</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">action</span>, *<span class="ruby-identifier">args</span>)
325
- 196: <span class="ruby-keyword kw">end</span></pre>
362
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 196</span>
363
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call_path</span>(<span class="ruby-identifier">path</span>, *<span class="ruby-identifier">args</span>)
364
+ 197: <span class="ruby-identifier">require</span> <span class="ruby-value str">'active_support'</span>
365
+ 198:
366
+ 199: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid path (must have #)&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/.#./</span>)
367
+ 200: <span class="ruby-identifier">controller</span>, <span class="ruby-identifier">action</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'#'</span>)
368
+ 201:
369
+ 202: <span class="ruby-identifier">controller_object</span> = <span class="ruby-keyword kw">begin</span>
370
+ 203: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-node">&quot;#{controller.classify}Jobs&quot;</span>).<span class="ruby-identifier">new</span>
371
+ 204: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span>
372
+ 205: <span class="ruby-keyword kw">begin</span>
373
+ 206: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-node">&quot;#{controller.classify}&quot;</span>)
374
+ 207: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span>
375
+ 208: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid controller: #{controller}&quot;</span>
376
+ 209: <span class="ruby-keyword kw">end</span>
377
+ 210: <span class="ruby-keyword kw">end</span>
378
+ 211:
379
+ 212: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid path action: #{action}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">controller_object</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">action</span>)
380
+ 213:
381
+ 214: <span class="ruby-identifier">controller_object</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">action</span>, *<span class="ruby-identifier">args</span>)
382
+ 215: <span class="ruby-keyword kw">end</span></pre>
326
383
  </div>
327
384
 
328
385
  </div>
@@ -353,10 +410,10 @@
353
410
  <div class="method-source-code"
354
411
  id="pending-paths-source">
355
412
  <pre>
356
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 198</span>
357
- 198: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pending_paths</span>
358
- 199: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">except</span>(<span class="ruby-value">:order</span>).<span class="ruby-identifier">select</span>(<span class="ruby-value str">'DISTINCT path'</span>).<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:path</span>)
359
- 200: <span class="ruby-keyword kw">end</span></pre>
413
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 217</span>
414
+ 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pending_paths</span>
415
+ 218: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">except</span>(<span class="ruby-value">:order</span>).<span class="ruby-identifier">select</span>(<span class="ruby-value str">'DISTINCT path'</span>).<span class="ruby-identifier">collect</span>(&amp;<span class="ruby-value">:path</span>)
416
+ 219: <span class="ruby-keyword kw">end</span></pre>
360
417
  </div>
361
418
 
362
419
  </div>
@@ -395,14 +452,14 @@ Has the job been assigned to an employee?
395
452
  <div class="method-source-code"
396
453
  id="assigned--source">
397
454
  <pre>
398
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 101</span>
399
- 101: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>
400
- 102: <span class="ruby-comment cmt"># If the #assigned? method is being called for but the job hasn't been completed, reload</span>
401
- 103: <span class="ruby-comment cmt"># to check to see if it has been assigned</span>
402
- 104: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">employee_pid</span>.<span class="ruby-identifier">nil?</span>
403
- 105:
404
- 106: <span class="ruby-identifier">employee_pid</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">employee_host</span>
405
- 107: <span class="ruby-keyword kw">end</span></pre>
455
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 98</span>
456
+ 98: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>
457
+ 99: <span class="ruby-comment cmt"># If the #assigned? method is being called for but the job hasn't been completed, reload</span>
458
+ 100: <span class="ruby-comment cmt"># to check to see if it has been assigned</span>
459
+ 101: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">employee_pid</span>.<span class="ruby-identifier">nil?</span>
460
+ 102:
461
+ 103: <span class="ruby-identifier">employee_pid</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">employee_host</span>
462
+ 104: <span class="ruby-keyword kw">end</span></pre>
406
463
  </div>
407
464
 
408
465
  </div>
@@ -437,10 +494,10 @@ dispatched)
437
494
  <div class="method-source-code"
438
495
  id="cancel-source">
439
496
  <pre>
440
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 86</span>
441
- 86: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cancel</span>
442
- 87: <span class="ruby-identifier">mark_as_cancelled</span>
443
- 88: <span class="ruby-keyword kw">end</span></pre>
497
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 83</span>
498
+ 83: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cancel</span>
499
+ 84: <span class="ruby-identifier">mark_as_cancelled</span>
500
+ 85: <span class="ruby-keyword kw">end</span></pre>
444
501
  </div>
445
502
 
446
503
  </div>
@@ -473,10 +530,10 @@ Has the job been cancelled?
473
530
  <div class="method-source-code"
474
531
  id="cancelled--source">
475
532
  <pre>
476
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 91</span>
477
- 91: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cancelled?</span>
478
- 92: <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">cancelled_at</span>
479
- 93: <span class="ruby-keyword kw">end</span></pre>
533
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 88</span>
534
+ 88: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cancelled?</span>
535
+ 89: <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">cancelled_at</span>
536
+ 90: <span class="ruby-keyword kw">end</span></pre>
480
537
  </div>
481
538
 
482
539
  </div>
@@ -509,10 +566,10 @@ Is the job complete?
509
566
  <div class="method-source-code"
510
567
  id="completed--source">
511
568
  <pre>
512
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 80</span>
513
- 80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed?</span>
514
- 81: <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">completed_at</span>
515
- 82: <span class="ruby-keyword kw">end</span></pre>
569
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 77</span>
570
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed?</span>
571
+ 78: <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">completed_at</span>
572
+ 79: <span class="ruby-keyword kw">end</span></pre>
516
573
  </div>
517
574
 
518
575
  </div>
@@ -551,34 +608,31 @@ Method used by the boss to dispatch an employee
551
608
  17: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Dispatching Job ##{self.id}&quot;</span>
552
609
  18:
553
610
  19: <span class="ruby-identifier">pid</span> = <span class="ruby-identifier">fork</span> <span class="ruby-keyword kw">do</span>
554
- 20: <span class="ruby-identifier">$0</span> = <span class="ruby-node">&quot;[job_boss] employee (job ##{self.id})&quot;</span>
555
- 21: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setpriority</span>(<span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">PRIO_PROCESS</span>, <span class="ruby-value">0</span>, <span class="ruby-value">19</span>)
556
- 22:
557
- 23: <span class="ruby-keyword kw">begin</span>
558
- 24: <span class="ruby-identifier">mark_employee</span>
559
- 25:
560
- 26: <span class="ruby-constant">Signal</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;HUP&quot;</span>) <span class="ruby-keyword kw">do</span>
561
- 27: <span class="ruby-identifier">mark_for_redo</span>
562
- 28: <span class="ruby-keyword kw">end</span>
563
- 29:
564
- 30: <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">call_path</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">path</span>, *<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">args</span>)
565
- 31:
566
- 32: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">update_attribute</span>(<span class="ruby-value">:result</span>, <span class="ruby-identifier">value</span>)
567
- 33: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>
568
- 34: <span class="ruby-identifier">mark_exception</span>(<span class="ruby-identifier">exception</span>)
569
- 35: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Error running job ##{self.id}!&quot;</span>
570
- 36: <span class="ruby-keyword kw">ensure</span>
571
- 37: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">mark_as_completed</span>
572
- 38: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">1</span>)
573
- 39: <span class="ruby-keyword kw">end</span>
574
- 40:
575
- 41: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Job ##{self.id} completed, exiting...&quot;</span>
576
- 42: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">exit</span>
577
- 43: <span class="ruby-keyword kw">end</span>
578
- 44: <span class="ruby-keyword kw">end</span>
579
- 45:
580
- 46: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-identifier">pid</span>)
581
- 47: <span class="ruby-keyword kw">end</span></pre>
611
+ 20: <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">reconnect!</span>
612
+ 21: <span class="ruby-identifier">$0</span> = <span class="ruby-node">&quot;[job_boss employee] job ##{self.id} #{self.path}(#{self.args.join(', ')})&quot;</span>
613
+ 22: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setpriority</span>(<span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">PRIO_PROCESS</span>, <span class="ruby-value">0</span>, <span class="ruby-value">19</span>)
614
+ 23:
615
+ 24: <span class="ruby-keyword kw">begin</span>
616
+ 25: <span class="ruby-identifier">mark_employee</span>
617
+ 26:
618
+ 27: <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">call_path</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">path</span>, *<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">args</span>)
619
+ 28:
620
+ 29: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">update_attribute</span>(<span class="ruby-value">:result</span>, <span class="ruby-identifier">value</span>)
621
+ 30: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>
622
+ 31: <span class="ruby-identifier">mark_exception</span>(<span class="ruby-identifier">exception</span>)
623
+ 32: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Error running job ##{self.id}!&quot;</span>
624
+ 33: <span class="ruby-keyword kw">ensure</span>
625
+ 34: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">mark_as_completed</span>
626
+ 35: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">1</span>)
627
+ 36: <span class="ruby-keyword kw">end</span>
628
+ 37:
629
+ 38: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Job ##{self.id} completed, exiting...&quot;</span>
630
+ 39: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">exit</span>
631
+ 40: <span class="ruby-keyword kw">end</span>
632
+ 41: <span class="ruby-keyword kw">end</span>
633
+ 42: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-identifier">pid</span>)
634
+ 43: <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">reconnect!</span>
635
+ 44: <span class="ruby-keyword kw">end</span></pre>
582
636
  </div>
583
637
 
584
638
  </div>
@@ -612,18 +666,18 @@ that exception with the message and backtrace
612
666
  <div class="method-source-code"
613
667
  id="error-source">
614
668
  <pre>
615
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 116</span>
616
- 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>
617
- 117: <span class="ruby-comment cmt"># If the error is being called for but the job hasn't been completed, reload</span>
618
- 118: <span class="ruby-comment cmt"># to check to see if there was a error</span>
619
- 119: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_message</span>.<span class="ruby-identifier">nil?</span>
620
- 120:
621
- 121: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">error_class</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_message</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_backtrace</span>
622
- 122: <span class="ruby-identifier">error</span> = <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">error_class</span>).<span class="ruby-identifier">new</span>(<span class="ruby-identifier">error_message</span>)
623
- 123: <span class="ruby-identifier">error</span>.<span class="ruby-identifier">set_backtrace</span>(<span class="ruby-identifier">error_backtrace</span>)
624
- 124: <span class="ruby-identifier">error</span>
625
- 125: <span class="ruby-keyword kw">end</span>
626
- 126: <span class="ruby-keyword kw">end</span></pre>
669
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 117</span>
670
+ 117: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>
671
+ 118: <span class="ruby-comment cmt"># If the error is being called for but the job hasn't been completed, reload</span>
672
+ 119: <span class="ruby-comment cmt"># to check to see if there was a error</span>
673
+ 120: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_message</span>.<span class="ruby-identifier">nil?</span>
674
+ 121:
675
+ 122: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">error_class</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_message</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">error_backtrace</span>
676
+ 123: <span class="ruby-identifier">error</span> = <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">error_class</span>).<span class="ruby-identifier">new</span>(<span class="ruby-identifier">error_message</span>)
677
+ 124: <span class="ruby-identifier">error</span>.<span class="ruby-identifier">set_backtrace</span>(<span class="ruby-identifier">error_backtrace</span>)
678
+ 125: <span class="ruby-identifier">error</span>
679
+ 126: <span class="ruby-keyword kw">end</span>
680
+ 127: <span class="ruby-keyword kw">end</span></pre>
627
681
  </div>
628
682
 
629
683
  </div>
@@ -656,19 +710,19 @@ Clear out the job and put it back onto the queue for processing
656
710
  <div class="method-source-code"
657
711
  id="mark-for-redo-source">
658
712
  <pre>
659
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 66</span>
660
- 66: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_for_redo</span>
661
- 67: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span>
662
- 68: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-keyword kw">nil</span>
663
- 69: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">nil</span>
664
- 70: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-keyword kw">nil</span>
665
- 71: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">status</span> = <span class="ruby-keyword kw">nil</span>
666
- 72: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">error_message</span> = <span class="ruby-keyword kw">nil</span>
667
- 73: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">error_backtrace</span> = <span class="ruby-keyword kw">nil</span>
668
- 74: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">employee_host</span> = <span class="ruby-keyword kw">nil</span>
669
- 75: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">employee_pid</span> = <span class="ruby-keyword kw">nil</span>
670
- 76: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">save</span>
671
- 77: <span class="ruby-keyword kw">end</span></pre>
713
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 63</span>
714
+ 63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_for_redo</span>
715
+ 64: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span>
716
+ 65: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-keyword kw">nil</span>
717
+ 66: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">nil</span>
718
+ 67: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-keyword kw">nil</span>
719
+ 68: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">status</span> = <span class="ruby-keyword kw">nil</span>
720
+ 69: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">error_message</span> = <span class="ruby-keyword kw">nil</span>
721
+ 70: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">error_backtrace</span> = <span class="ruby-keyword kw">nil</span>
722
+ 71: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">employee_host</span> = <span class="ruby-keyword kw">nil</span>
723
+ 72: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">employee_pid</span> = <span class="ruby-keyword kw">nil</span>
724
+ 73: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">save</span>
725
+ 74: <span class="ruby-keyword kw">end</span></pre>
672
726
  </div>
673
727
 
674
728
  </div>
@@ -699,16 +753,16 @@ Clear out the job and put it back onto the queue for processing
699
753
  <div class="method-source-code"
700
754
  id="result-source">
701
755
  <pre>
702
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 55</span>
703
- 55: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>
704
- 56: <span class="ruby-comment cmt"># If the result is being called for but the job hasn't been completed, reload</span>
705
- 57: <span class="ruby-comment cmt"># to check to see if there was a result</span>
706
- 58: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">read_attribute</span>(<span class="ruby-value">:result</span>).<span class="ruby-identifier">nil?</span>
707
- 59:
708
- 60: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">read_attribute</span>(<span class="ruby-value">:result</span>)
709
- 61:
710
- 62: <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">value</span>
711
- 63: <span class="ruby-keyword kw">end</span></pre>
756
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 52</span>
757
+ 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>
758
+ 53: <span class="ruby-comment cmt"># If the result is being called for but the job hasn't been completed, reload</span>
759
+ 54: <span class="ruby-comment cmt"># to check to see if there was a result</span>
760
+ 55: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">completed?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">read_attribute</span>(<span class="ruby-value">:result</span>).<span class="ruby-identifier">nil?</span>
761
+ 56:
762
+ 57: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">read_attribute</span>(<span class="ruby-value">:result</span>)
763
+ 58:
764
+ 59: <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">value</span>
765
+ 60: <span class="ruby-keyword kw">end</span></pre>
712
766
  </div>
713
767
 
714
768
  </div>
@@ -743,10 +797,10 @@ stored as the string &#8220;f&#8220;
743
797
  <div class="method-source-code"
744
798
  id="result--source">
745
799
  <pre>
746
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 51</span>
747
- 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result=</span>(<span class="ruby-identifier">value</span>)
748
- 52: <span class="ruby-identifier">write_attribute</span>(<span class="ruby-value">:result</span>, [<span class="ruby-identifier">value</span>])
749
- 53: <span class="ruby-keyword kw">end</span></pre>
800
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 48</span>
801
+ 48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result=</span>(<span class="ruby-identifier">value</span>)
802
+ 49: <span class="ruby-identifier">write_attribute</span>(<span class="ruby-value">:result</span>, [<span class="ruby-identifier">value</span>])
803
+ 50: <span class="ruby-keyword kw">end</span></pre>
750
804
  </div>
751
805
 
752
806
  </div>
@@ -779,10 +833,10 @@ Did the job succeed?
779
833
  <div class="method-source-code"
780
834
  id="succeeded--source">
781
835
  <pre>
782
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 96</span>
783
- 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">succeeded?</span>
784
- 97: <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'success'</span>)
785
- 98: <span class="ruby-keyword kw">end</span></pre>
836
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 93</span>
837
+ 93: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">succeeded?</span>
838
+ 94: <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'success'</span>)
839
+ 95: <span class="ruby-keyword kw">end</span></pre>
786
840
  </div>
787
841
 
788
842
  </div>
@@ -815,10 +869,14 @@ How long did the job take?
815
869
  <div class="method-source-code"
816
870
  id="time-taken-source">
817
871
  <pre>
818
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 110</span>
819
- 110: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">time_taken</span>
820
- 111: <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">started_at</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>
821
- 112: <span class="ruby-keyword kw">end</span></pre>
872
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 107</span>
873
+ 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">time_taken</span>
874
+ 108: <span class="ruby-comment cmt"># If the #time_taken method is being called for but the job doesn't seem to have started/completed</span>
875
+ 109: <span class="ruby-comment cmt"># reload to see if it has</span>
876
+ 110: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">started_at</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">nil?</span>
877
+ 111:
878
+ 112: <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">started_at</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>
879
+ 113: <span class="ruby-keyword kw">end</span></pre>
822
880
  </div>
823
881
 
824
882
  </div>
@@ -855,10 +913,10 @@ How long did the job take?
855
913
  <div class="method-source-code"
856
914
  id="mark-as-cancelled-source">
857
915
  <pre>
858
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 160</span>
859
- 160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_cancelled</span>
860
- 161: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:cancelled_at</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
861
- 162: <span class="ruby-keyword kw">end</span></pre>
916
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 175</span>
917
+ 175: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_cancelled</span>
918
+ 176: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:cancelled_at</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
919
+ 177: <span class="ruby-keyword kw">end</span></pre>
862
920
  </div>
863
921
 
864
922
  </div>
@@ -889,12 +947,12 @@ How long did the job take?
889
947
  <div class="method-source-code"
890
948
  id="mark-as-completed-source">
891
949
  <pre>
892
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 174</span>
893
- 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_completed</span>
894
- 175: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'success'</span>
895
- 176: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
896
- 177: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">save</span>
897
- 178: <span class="ruby-keyword kw">end</span></pre>
950
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 189</span>
951
+ 189: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_completed</span>
952
+ 190: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'success'</span>
953
+ 191: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
954
+ 192: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">save</span>
955
+ 193: <span class="ruby-keyword kw">end</span></pre>
898
956
  </div>
899
957
 
900
958
  </div>
@@ -925,10 +983,10 @@ How long did the job take?
925
983
  <div class="method-source-code"
926
984
  id="mark-as-started-source">
927
985
  <pre>
928
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 156</span>
929
- 156: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_started</span>
930
- 157: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:started_at</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
931
- 158: <span class="ruby-keyword kw">end</span></pre>
986
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 171</span>
987
+ 171: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_as_started</span>
988
+ 172: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:started_at</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
989
+ 173: <span class="ruby-keyword kw">end</span></pre>
932
990
  </div>
933
991
 
934
992
  </div>
@@ -959,12 +1017,12 @@ How long did the job take?
959
1017
  <div class="method-source-code"
960
1018
  id="mark-employee-source">
961
1019
  <pre>
962
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 164</span>
963
- 164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_employee</span>
964
- 165: <span class="ruby-identifier">require</span> <span class="ruby-value str">'socket'</span>
965
- 166: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:employee_host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Socket</span>.<span class="ruby-identifier">gethostname</span>,
966
- 167: <span class="ruby-value">:employee_pid</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>)
967
- 168: <span class="ruby-keyword kw">end</span></pre>
1020
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 179</span>
1021
+ 179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_employee</span>
1022
+ 180: <span class="ruby-identifier">require</span> <span class="ruby-value str">'socket'</span>
1023
+ 181: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:employee_host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Socket</span>.<span class="ruby-identifier">gethostname</span>,
1024
+ 182: <span class="ruby-value">:employee_pid</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>)
1025
+ 183: <span class="ruby-keyword kw">end</span></pre>
968
1026
  </div>
969
1027
 
970
1028
  </div>
@@ -995,10 +1053,10 @@ How long did the job take?
995
1053
  <div class="method-source-code"
996
1054
  id="mark-exception-source">
997
1055
  <pre>
998
- <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 170</span>
999
- 170: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_exception</span>(<span class="ruby-identifier">exception</span>)
1000
- 171: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:status</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'error'</span>, <span class="ruby-value">:error_class</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:error_message</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">message</span>, <span class="ruby-value">:error_backtrace</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">backtrace</span>)
1001
- 172: <span class="ruby-keyword kw">end</span></pre>
1056
+ <span class="ruby-comment cmt"># File lib/job_boss/job.rb, line 185</span>
1057
+ 185: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mark_exception</span>(<span class="ruby-identifier">exception</span>)
1058
+ 186: <span class="ruby-identifier">update_attributes</span>(<span class="ruby-value">:status</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'error'</span>, <span class="ruby-value">:error_class</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:error_message</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">message</span>, <span class="ruby-value">:error_backtrace</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exception</span>.<span class="ruby-identifier">backtrace</span>)
1059
+ 187: <span class="ruby-keyword kw">end</span></pre>
1002
1060
  </div>
1003
1061
 
1004
1062
  </div>