job_boss 0.5.0 → 0.5.5

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.
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
@@ -77,6 +77,8 @@
77
77
 
78
78
  <li><a href="#method-c-queue">::queue</a></li>
79
79
 
80
+ <li><a href="#method-c-queue_path">::queue_path</a></li>
81
+
80
82
  <li><a href="#method-c-resolve_path">::resolve_path</a></li>
81
83
 
82
84
  <li><a href="#method-i-available_employees">#available_employees</a></li>
@@ -112,6 +114,10 @@
112
114
  <h3 class="section-header">Files</h3>
113
115
  <ul>
114
116
 
117
+ <li class="file"><a href="../Gemfile.html">Gemfile</a></li>
118
+
119
+ <li class="file"><a href="../MIT-LICENSE.html">MIT-LICENSE</a></li>
120
+
115
121
  <li class="file"><a href="../Rakefile.html">Rakefile</a></li>
116
122
 
117
123
  </ul>
@@ -153,6 +159,8 @@
153
159
 
154
160
  <li><a href="../MathJobs.html">MathJobs</a></li>
155
161
 
162
+ <li><a href="../Penguin.html">Penguin</a></li>
163
+
156
164
  <li><a href="../SleepJobs.html">SleepJobs</a></li>
157
165
 
158
166
  <li><a href="../StringJobs.html">StringJobs</a></li>
@@ -243,13 +251,13 @@ Used to set <a href="Boss.html">Boss</a> configuration Usage:
243
251
  <div class="method-source-code"
244
252
  id="logger-source">
245
253
  <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>
254
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 32</span>
255
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">logger</span>
256
+ 33: <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>)
257
+ 34:
258
+ 35: <span class="ruby-identifier">require</span> <span class="ruby-value str">'logger'</span>
259
+ 36: <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>)
260
+ 37: <span class="ruby-keyword kw">end</span></pre>
253
261
  </div>
254
262
 
255
263
  </div>
@@ -280,16 +288,16 @@ Used to set <a href="Boss.html">Boss</a> configuration Usage:
280
288
  <div class="method-source-code"
281
289
  id="new-source">
282
290
  <pre>
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>
291
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 50</span>
292
+ 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span> = {})
293
+ 51: <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>]
294
+ 52: <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>]
295
+ 53: <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>]
296
+ 54: <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>]
297
+ 55: <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>]
298
+ 56:
299
+ 57: <span class="ruby-ivar">@running_jobs</span> = []
300
+ 58: <span class="ruby-keyword kw">end</span></pre>
293
301
  </div>
294
302
 
295
303
  </div>
@@ -336,6 +344,46 @@ Used to queue jobs Usage:
336
344
 
337
345
 
338
346
 
347
+ </div>
348
+
349
+
350
+ <div id="queue-path-method" class="method-detail ">
351
+ <a name="method-c-queue_path"></a>
352
+
353
+ <div class="method-heading">
354
+
355
+ <span class="method-name">queue_path</span><span
356
+ class="method-args">(path, *args)</span>
357
+ <span class="method-click-advice">click to toggle source</span>
358
+
359
+ </div>
360
+
361
+ <div class="method-description">
362
+
363
+ <p>
364
+ Used to queue jobs Usage:
365
+ </p>
366
+ <pre>
367
+ Boss.queue_path('math#in_prime?', 42)</pre>
368
+
369
+
370
+
371
+ <div class="method-source-code"
372
+ id="queue-path-source">
373
+ <pre>
374
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 26</span>
375
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">queue_path</span>(<span class="ruby-identifier">path</span>, *<span class="ruby-identifier">args</span>)
376
+ 27: <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>)
377
+ 28:
378
+ 29: <span class="ruby-identifier">queue</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">controller</span>).<span class="ruby-identifier">send</span>(<span class="ruby-identifier">action</span>, *<span class="ruby-identifier">args</span>)
379
+ 30: <span class="ruby-keyword kw">end</span></pre>
380
+ </div>
381
+
382
+ </div>
383
+
384
+
385
+
386
+
339
387
  </div>
340
388
 
341
389
 
@@ -362,14 +410,14 @@ application_root
362
410
  <div class="method-source-code"
363
411
  id="resolve-path-source">
364
412
  <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>
413
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 41</span>
414
+ 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolve_path</span>(<span class="ruby-identifier">path</span>)
415
+ 42: <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>)
416
+ 43: <span class="ruby-identifier">path</span>
417
+ 44: <span class="ruby-keyword kw">else</span>
418
+ 45: <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>)
419
+ 46: <span class="ruby-keyword kw">end</span>
420
+ 47: <span class="ruby-keyword kw">end</span></pre>
373
421
  </div>
374
422
 
375
423
  </div>
@@ -408,50 +456,50 @@ Start the boss
408
456
  <div class="method-source-code"
409
457
  id="start-source">
410
458
  <pre>
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>
419
- 59:
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>
423
- 63:
424
- 64: <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>
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">&quot;Job Boss started&quot;</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">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;</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">&lt;&lt;</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">&gt;</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>
459
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 61</span>
460
+ 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
461
+ 62: <span class="ruby-identifier">require</span> <span class="ruby-value str">'active_record'</span>
462
+ 63: <span class="ruby-identifier">require</span> <span class="ruby-value str">'yaml'</span>
463
+ 64:
464
+ 65: <span class="ruby-identifier">establish_active_record_connection</span>
465
+ 66:
466
+ 67: <span class="ruby-identifier">require_job_classes</span>
467
+ 68:
468
+ 69: <span class="ruby-identifier">require</span> <span class="ruby-value str">'job_boss/job'</span>
469
+ 70:
470
+ 71: <span class="ruby-identifier">migrate</span>
471
+ 72:
472
+ 73: <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>
473
+ 74: <span class="ruby-identifier">stop</span>
474
+ 75: <span class="ruby-keyword kw">end</span>
475
+ 76:
476
+ 77: <span class="ruby-identifier">at_exit</span> <span class="ruby-keyword kw">do</span>
477
+ 78: <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>
478
+ 79: <span class="ruby-keyword kw">end</span>
479
+ 80:
480
+ 81: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">&quot;Job Boss started&quot;</span>
481
+ 82:
482
+ 83: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
483
+ 84: <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">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">pending</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
484
+ 85: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">@@config</span>.<span class="ruby-identifier">sleep_interval</span>)
485
+ 86: <span class="ruby-keyword kw">next</span>
486
+ 87: <span class="ruby-keyword kw">end</span>
487
+ 88:
488
+ 89: <span class="ruby-comment cmt"># Go through each pending path so that we don't get stuck just processing</span>
489
+ 90: <span class="ruby-comment cmt"># long running jobs which would leave quicker jobs to suffocate</span>
490
+ 91: <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>
491
+ 92: <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>)
492
+ 93: <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>
493
+ 94:
494
+ 95: <span class="ruby-identifier">job</span>.<span class="ruby-identifier">dispatch</span>
495
+ 96: <span class="ruby-ivar">@running_jobs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">job</span>
496
+ 97:
497
+ 98: <span class="ruby-identifier">children_count</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
498
+ 99: <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">&gt;</span> <span class="ruby-value">0</span>
499
+ 100: <span class="ruby-keyword kw">end</span>
500
+ 101:
501
+ 102: <span class="ruby-keyword kw">end</span>
502
+ 103: <span class="ruby-keyword kw">end</span></pre>
455
503
  </div>
456
504
 
457
505
  </div>
@@ -482,14 +530,14 @@ Start the boss
482
530
  <div class="method-source-code"
483
531
  id="stop-source">
484
532
  <pre>
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">&quot;Stopping #{@running_jobs.size} running employees...&quot;</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">&quot;Job Boss stopped&quot;</span>
492
- 102: <span class="ruby-keyword kw">end</span></pre>
533
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 105</span>
534
+ 105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
535
+ 106: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Stopping #{@running_jobs.size} running employees...&quot;</span>
536
+ 107:
537
+ 108: <span class="ruby-identifier">shutdown_running_jobs</span>
538
+ 109:
539
+ 110: <span class="ruby-constant">Boss</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">&quot;Job Boss stopped&quot;</span>
540
+ 111: <span class="ruby-keyword kw">end</span></pre>
493
541
  </div>
494
542
 
495
543
  </div>
@@ -528,12 +576,12 @@ Total number of employees which can be run
528
576
  <div class="method-source-code"
529
577
  id="available-employees-source">
530
578
  <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>
579
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 136</span>
580
+ 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">available_employees</span>
581
+ 137: <span class="ruby-identifier">cleanup_running_jobs</span>
582
+ 138:
583
+ 139: <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>
584
+ 140: <span class="ruby-keyword kw">end</span></pre>
537
585
  </div>
538
586
 
539
587
  </div>
@@ -567,25 +615,25 @@ which have been cancelled, or which went MIA
567
615
  <div class="method-source-code"
568
616
  id="cleanup-running-jobs-source">
569
617
  <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>(&amp;<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>
618
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 116</span>
619
+ 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup_running_jobs</span>
620
+ 117: <span class="ruby-constant">Job</span>.<span class="ruby-identifier">uncached</span> <span class="ruby-keyword kw">do</span>
621
+ 118: <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>)
622
+ 119:
623
+ 120: <span class="ruby-identifier">cancelled_jobs</span> = <span class="ruby-ivar">@running_jobs</span>.<span class="ruby-identifier">select</span>(&amp;<span class="ruby-value">:cancelled?</span>)
624
+ 121: <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>) }
625
+ 122: <span class="ruby-ivar">@running_jobs</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">cancelled_jobs</span>
626
+ 123:
627
+ 124: <span class="ruby-comment cmt"># Clean out any jobs whos processes have stopped running for some reason</span>
628
+ 125: <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>
629
+ 126: <span class="ruby-keyword kw">begin</span>
630
+ 127: <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>)
631
+ 128: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
632
+ 129: <span class="ruby-keyword kw">nil</span>
633
+ 130: <span class="ruby-keyword kw">end</span>
634
+ 131: <span class="ruby-keyword kw">end</span>
635
+ 132: <span class="ruby-keyword kw">end</span>
636
+ 133: <span class="ruby-keyword kw">end</span></pre>
589
637
  </div>
590
638
 
591
639
  </div>
@@ -616,16 +664,17 @@ which have been cancelled, or which went MIA
616
664
  <div class="method-source-code"
617
665
  id="establish-active-record-connection-source">
618
666
  <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">&quot;Database YAML file missing (#{@@config.database_yaml_path})&quot;</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>
667
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 142</span>
668
+ 142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">establish_active_record_connection</span>
669
+ 143: <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>)
670
+ 144:
671
+ 145: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Database YAML file missing (#{@@config.database_yaml_path})&quot;</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>)
672
+ 146:
673
+ 147: <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>))
674
+ 148:
675
+ 149: <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">remove_connection</span>
676
+ 150: <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>])
677
+ 151: <span class="ruby-keyword kw">end</span></pre>
629
678
  </div>
630
679
 
631
680
  </div>
@@ -656,14 +705,14 @@ which have been cancelled, or which went MIA
656
705
  <div class="method-source-code"
657
706
  id="kill-job-source">
658
707
  <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">&quot;HUP&quot;</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>
708
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 168</span>
709
+ 168: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">kill_job</span>(<span class="ruby-identifier">job</span>)
710
+ 169: <span class="ruby-keyword kw">begin</span>
711
+ 170: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value str">&quot;TERM&quot;</span>, <span class="ruby-identifier">job</span>.<span class="ruby-identifier">employee_pid</span>.<span class="ruby-identifier">to_i</span>)
712
+ 171: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
713
+ 172: <span class="ruby-keyword kw">nil</span>
714
+ 173: <span class="ruby-keyword kw">end</span>
715
+ 174: <span class="ruby-keyword kw">end</span></pre>
667
716
  </div>
668
717
 
669
718
  </div>
@@ -694,13 +743,13 @@ which have been cancelled, or which went MIA
694
743
  <div class="method-source-code"
695
744
  id="migrate-source">
696
745
  <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>
746
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 161</span>
747
+ 161: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">migrate</span>
748
+ 162: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Job</span>.<span class="ruby-identifier">table_exists?</span>
749
+ 163: <span class="ruby-identifier">require</span> <span class="ruby-value str">'migrate'</span>
750
+ 164: <span class="ruby-constant">CreateJobs</span>.<span class="ruby-identifier">up</span>
751
+ 165: <span class="ruby-keyword kw">end</span>
752
+ 166: <span class="ruby-keyword kw">end</span></pre>
704
753
  </div>
705
754
 
706
755
  </div>
@@ -731,14 +780,14 @@ which have been cancelled, or which went MIA
731
780
  <div class="method-source-code"
732
781
  id="require-job-classes-source">
733
782
  <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">&quot;Jobs path missing (#{@@config.jobs_path})&quot;</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>
783
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 153</span>
784
+ 153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">require_job_classes</span>
785
+ 154: <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>)
786
+ 155:
787
+ 156: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Jobs path missing (#{@@config.jobs_path})&quot;</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>)
788
+ 157:
789
+ 158: <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> }
790
+ 159: <span class="ruby-keyword kw">end</span></pre>
742
791
  </div>
743
792
 
744
793
  </div>
@@ -769,15 +818,15 @@ which have been cancelled, or which went MIA
769
818
  <div class="method-source-code"
770
819
  id="shutdown-running-jobs-source">
771
820
  <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>
821
+ <span class="ruby-comment cmt"># File lib/job_boss/boss.rb, line 176</span>
822
+ 176: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shutdown_running_jobs</span>
823
+ 177: <span class="ruby-identifier">cleanup_running_jobs</span>
824
+ 178:
825
+ 179: <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>
826
+ 180: <span class="ruby-identifier">kill_job</span>(<span class="ruby-identifier">job</span>)
827
+ 181: <span class="ruby-identifier">job</span>.<span class="ruby-identifier">mark_for_redo</span>
828
+ 182: <span class="ruby-keyword kw">end</span>
829
+ 183: <span class="ruby-keyword kw">end</span></pre>
781
830
  </div>
782
831
 
783
832
  </div>
@@ -86,6 +86,10 @@
86
86
  <h3 class="section-header">Files</h3>
87
87
  <ul>
88
88
 
89
+ <li class="file"><a href="../Gemfile.html">Gemfile</a></li>
90
+
91
+ <li class="file"><a href="../MIT-LICENSE.html">MIT-LICENSE</a></li>
92
+
89
93
  <li class="file"><a href="../Rakefile.html">Rakefile</a></li>
90
94
 
91
95
  </ul>
@@ -127,6 +131,8 @@
127
131
 
128
132
  <li><a href="../MathJobs.html">MathJobs</a></li>
129
133
 
134
+ <li><a href="../Penguin.html">Penguin</a></li>
135
+
130
136
  <li><a href="../SleepJobs.html">SleepJobs</a></li>
131
137
 
132
138
  <li><a href="../StringJobs.html">StringJobs</a></li>
@@ -305,7 +311,7 @@
305
311
  <pre>
306
312
  <span class="ruby-comment cmt"># File lib/job_boss/config.rb, line 5</span>
307
313
  5: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_args</span>(<span class="ruby-identifier">argv</span>, <span class="ruby-identifier">options</span> = {})
308
- 6: <span class="ruby-ivar">@application_root</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:working_dir</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>
314
+ 6: <span class="ruby-ivar">@application_root</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:working_dir</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>)
309
315
  7: <span class="ruby-ivar">@database_yaml_path</span> = <span class="ruby-value str">'config/database.yml'</span>
310
316
  8: <span class="ruby-ivar">@log_path</span> = <span class="ruby-value str">'log/job_boss.log'</span>
311
317
  9: <span class="ruby-ivar">@jobs_path</span> = <span class="ruby-value str">'app/jobs'</span>
@@ -319,7 +325,7 @@
319
325
  17: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-value str">&quot;Usage: job_boss [start|stop|restart|run|zap] [-- &lt;options&gt;]&quot;</span>
320
326
  18:
321
327
  19: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-r&quot;</span>, <span class="ruby-value str">&quot;--application-root PATH&quot;</span>, <span class="ruby-value str">&quot;Path for the application root upon which other paths depend (defaults to .)&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
322
- 20: <span class="ruby-ivar">@application_root</span> = <span class="ruby-identifier">path</span>
328
+ 20: <span class="ruby-ivar">@application_root</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">path</span>)
323
329
  21: <span class="ruby-keyword kw">end</span>
324
330
  22:
325
331
  23: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-d&quot;</span>, <span class="ruby-value str">&quot;--database-yaml PATH&quot;</span>, <span class="ruby-node">&quot;Path for database YAML (defaults to &lt;application-root&gt;/#{@database_yaml_path})&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>