job_boss 0.2 → 0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +25 -2
- data/Rakefile +21 -8
- data/bin/job_boss +1 -0
- data/doc/ActiveSupport/TestCase.html +584 -0
- data/doc/{Passenger.html → ActiveSupport.html} +10 -30
- data/doc/CreateJobs.html +31 -16
- data/doc/{Mongrel.html → DaemonTest.html} +23 -39
- data/doc/JobBoss/Boss.html +466 -68
- data/doc/JobBoss/Config.html +77 -39
- data/doc/JobBoss/Job.html +375 -97
- data/doc/JobBoss/Queuer.html +35 -21
- data/doc/JobBoss.html +14 -311
- data/doc/{ActiveRecord.html → MathJobs.html} +66 -36
- data/doc/Rakefile.html +43 -9
- data/doc/SleepJobs.html +251 -0
- data/doc/{PhusionPassenger.html → StringJobs.html} +66 -38
- data/doc/bin/job_boss.html +1 -1
- data/doc/created.rid +14 -8
- data/doc/index.html +63 -7
- data/doc/lib/job_boss/boss_rb.html +5 -1
- data/doc/lib/job_boss/{configuror_rb.html → config_rb.html} +2 -2
- data/doc/lib/job_boss/job_rb.html +3 -1
- data/doc/lib/job_boss/queuer_rb.html +1 -1
- data/doc/lib/migrate_rb.html +1 -1
- data/doc/{vendor/spawn/lib/spawn_rb.html → test/app_root/app/jobs/math_jobs_rb.html} +7 -7
- data/doc/{vendor/spawn/lib/patches_rb.html → test/app_root/app/jobs/sleep_jobs_rb.html} +8 -12
- data/doc/test/app_root/app/jobs/string_jobs_rb.html +52 -0
- data/doc/test/test_helper_rb.html +62 -0
- data/doc/{vendor/spawn/init_rb.html → test/unit/daemon_test_rb.html} +3 -3
- data/doc/test/unit/job_test_rb.html +60 -0
- data/job_boss.gemspec +3 -2
- data/lib/job_boss/boss.rb +29 -7
- data/lib/job_boss/config.rb +49 -0
- data/lib/job_boss/job.rb +57 -13
- data/lib/migrate.rb +3 -1
- data/test/app_root/app/jobs/math_jobs.rb +5 -0
- data/test/app_root/app/jobs/sleep_jobs.rb +9 -0
- data/test/app_root/app/jobs/string_jobs.rb +5 -0
- data/test/app_root/config/database.yml +22 -0
- data/test/test_helper.rb +113 -0
- data/test/unit/daemon_test.rb +29 -0
- data/test/unit/job_test.rb +73 -0
- metadata +46 -27
- data/doc/ActiveRecord/Base.html +0 -343
- data/doc/Mongrel/HttpServer.html +0 -275
- data/doc/Passenger/Railz/RequestHandler.html +0 -271
- data/doc/Passenger/Railz.html +0 -185
- data/doc/PhusionPassenger/Rack/RequestHandler.html +0 -271
- data/doc/PhusionPassenger/Rack.html +0 -185
- data/doc/PhusionPassenger/Railz/RequestHandler.html +0 -271
- data/doc/PhusionPassenger/Railz.html +0 -185
- data/doc/Spawn/SpawnId.html +0 -276
- data/doc/Spawn.html +0 -742
- data/doc/vendor/spawn/CHANGELOG.html +0 -275
- data/doc/vendor/spawn/LICENSE.html +0 -151
- data/lib/job_boss/configuror.rb +0 -40
data/README.markdown
CHANGED
@@ -29,7 +29,22 @@ Create a directory to store classes which define code which can be executed by t
|
|
29
29
|
|
30
30
|
Start up your boss:
|
31
31
|
|
32
|
-
job_boss start
|
32
|
+
job_boss start -- <options>
|
33
|
+
|
34
|
+
You can get command line options with the command:
|
35
|
+
|
36
|
+
job_boss run -- -h
|
37
|
+
|
38
|
+
But since you don't want to do that right now, it looks something like this:
|
39
|
+
|
40
|
+
Usage: job_boss [start|stop|restart|run|zap] [-- <options>]
|
41
|
+
-r, --application-root PATH Path for the application root upon which other paths depend (defaults to .)
|
42
|
+
-d, --database-yaml PATH Path for database YAML (defaults to <application-root>/config/database.yml)
|
43
|
+
-l, --log-path PATH Path for log file (defaults to <application-root>/log/job_boss.log)
|
44
|
+
-j, --jobs-path PATH Path to folder with job classes (defaults to <application-root>/app/jobs)
|
45
|
+
-e, --environment ENV Environment to use in database YAML file (defaults to 'development')
|
46
|
+
-s, --sleep-interval INTERVAL Number of seconds for the boss to sleep between checks of the queue (default 0.5)
|
47
|
+
-c, --employee-limit LIMIT Maximum number of employees (default 4)
|
33
48
|
|
34
49
|
From your Rails code or in a console (this functionality should probably be encapsulated in the job_boss gem):
|
35
50
|
|
@@ -40,4 +55,12 @@ From your Rails code or in a console (this functionality should probably be enca
|
|
40
55
|
|
41
56
|
JobBoss::Job.wait_for_jobs(jobs) # Will sleep until the jobs are all complete
|
42
57
|
|
43
|
-
JobBoss::Job.result_hash(jobs) # => {[0]=>
|
58
|
+
JobBoss::Job.result_hash(jobs) # => {[0]=>false, [1]=>false, [2]=>true, [3]=>true, [4]=>false, ... }
|
59
|
+
|
60
|
+
Features:
|
61
|
+
|
62
|
+
* Call the `cancel` method on a job to have the job boss cancel it
|
63
|
+
* Call the `mark_for_redo` method on a job to have it processed again. This is automatically run for all currently running jobs in the event that the boss has been told to stop
|
64
|
+
* If a job throws an exception, it will be caught and recorded. Call the `error` method on a job to find out what the error was
|
65
|
+
* Find out how long the job took by calling the `time_taken` method on a job
|
66
|
+
* The job boss dispatches "employees" to work on jobs. Viewing the processes, the process name is changed to reflect which jobs employees are working on for easy tracing (e.g. `[job_boss] employee (job #4)`)
|
data/Rakefile
CHANGED
@@ -1,15 +1,28 @@
|
|
1
|
-
require
|
1
|
+
require "rake/testtask"
|
2
|
+
require "rake/rdoctask"
|
2
3
|
|
3
|
-
|
4
|
+
desc 'Default: run unit tests.'
|
5
|
+
task :default => :test
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
desc 'Test the job_boss gem.'
|
8
|
+
Rake::TestTask.new(:test) do |t|
|
9
|
+
t.libs << 'test'
|
10
|
+
t.libs << 'test/app_root/app/jobs'
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
end
|
12
15
|
|
16
|
+
desc 'Generate documentation for the job_boss gem.'
|
17
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
18
|
+
rdoc.rdoc_dir = 'rdoc'
|
19
|
+
rdoc.title = 'job_boss'
|
20
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
21
|
+
rdoc.rdoc_files.include('README')
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
+
end
|
24
|
+
|
25
|
+
namespace :job_boss do
|
13
26
|
task :restart do
|
14
27
|
end
|
15
28
|
end
|
data/bin/job_boss
CHANGED
@@ -0,0 +1,584 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
7
|
+
|
8
|
+
<title>Class: ActiveSupport::TestCase</title>
|
9
|
+
|
10
|
+
<link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
|
11
|
+
|
12
|
+
<script src="../js/jquery.js" type="text/javascript"
|
13
|
+
charset="utf-8"></script>
|
14
|
+
<script src="../js/thickbox-compressed.js" type="text/javascript"
|
15
|
+
charset="utf-8"></script>
|
16
|
+
<script src="../js/quicksearch.js" type="text/javascript"
|
17
|
+
charset="utf-8"></script>
|
18
|
+
<script src="../js/darkfish.js" type="text/javascript"
|
19
|
+
charset="utf-8"></script>
|
20
|
+
|
21
|
+
</head>
|
22
|
+
<body class="class">
|
23
|
+
|
24
|
+
<div id="metadata">
|
25
|
+
<div id="home-metadata">
|
26
|
+
<div id="home-section" class="section">
|
27
|
+
<h3 class="section-header">
|
28
|
+
<a href="../index.html">Home</a>
|
29
|
+
<a href="../index.html#classes">Classes</a>
|
30
|
+
<a href="../index.html#methods">Methods</a>
|
31
|
+
</h3>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="file-metadata">
|
36
|
+
<div id="file-list-section" class="section">
|
37
|
+
<h3 class="section-header">In Files</h3>
|
38
|
+
<div class="section-body">
|
39
|
+
<ul>
|
40
|
+
|
41
|
+
<li><a href="../test/test_helper_rb.html?TB_iframe=true&height=550&width=785"
|
42
|
+
class="thickbox" title="test/test_helper.rb">test/test_helper.rb</a></li>
|
43
|
+
|
44
|
+
</ul>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div id="class-metadata">
|
52
|
+
|
53
|
+
<!-- Parent Class -->
|
54
|
+
|
55
|
+
<div id="parent-class-section" class="section">
|
56
|
+
<h3 class="section-header">Parent</h3>
|
57
|
+
|
58
|
+
<p class="link">Object</p>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
|
62
|
+
|
63
|
+
<!-- Namespace Contents -->
|
64
|
+
|
65
|
+
|
66
|
+
<!-- Method Quickref -->
|
67
|
+
|
68
|
+
<div id="method-list-section" class="section">
|
69
|
+
<h3 class="section-header">Methods</h3>
|
70
|
+
<ul class="link-list">
|
71
|
+
|
72
|
+
<li><a href="#method-i-assert_pid_not_running">#assert_pid_not_running</a></li>
|
73
|
+
|
74
|
+
<li><a href="#method-i-assert_pid_running">#assert_pid_running</a></li>
|
75
|
+
|
76
|
+
<li><a href="#method-i-clean_app_environment">#clean_app_environment</a></li>
|
77
|
+
|
78
|
+
<li><a href="#method-i-get_pid_from_startup">#get_pid_from_startup</a></li>
|
79
|
+
|
80
|
+
<li><a href="#method-i-restart_daemon">#restart_daemon</a></li>
|
81
|
+
|
82
|
+
<li><a href="#method-i-setup_paths">#setup_paths</a></li>
|
83
|
+
|
84
|
+
<li><a href="#method-i-start_daemon">#start_daemon</a></li>
|
85
|
+
|
86
|
+
<li><a href="#method-i-stop_daemon">#stop_daemon</a></li>
|
87
|
+
|
88
|
+
<li><a href="#method-i-wait_for_file">#wait_for_file</a></li>
|
89
|
+
|
90
|
+
<li><a href="#method-i-wait_until_job_assigned">#wait_until_job_assigned</a></li>
|
91
|
+
|
92
|
+
</ul>
|
93
|
+
</div>
|
94
|
+
|
95
|
+
|
96
|
+
<!-- Included Modules -->
|
97
|
+
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div id="project-metadata">
|
101
|
+
|
102
|
+
|
103
|
+
<div id="fileindex-section" class="section project-section">
|
104
|
+
<h3 class="section-header">Files</h3>
|
105
|
+
<ul>
|
106
|
+
|
107
|
+
<li class="file"><a href="../Rakefile.html">Rakefile</a></li>
|
108
|
+
|
109
|
+
</ul>
|
110
|
+
</div>
|
111
|
+
|
112
|
+
|
113
|
+
<div id="classindex-section" class="section project-section">
|
114
|
+
<h3 class="section-header">Class Index
|
115
|
+
<span class="search-toggle"><img src="../images/find.png"
|
116
|
+
height="16" width="16" alt="[+]"
|
117
|
+
title="show/hide quicksearch" /></span></h3>
|
118
|
+
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
|
119
|
+
<fieldset>
|
120
|
+
<legend>Quicksearch</legend>
|
121
|
+
<input type="text" name="quicksearch" value=""
|
122
|
+
class="quicksearch-field" />
|
123
|
+
</fieldset>
|
124
|
+
</form>
|
125
|
+
|
126
|
+
<ul class="link-list">
|
127
|
+
|
128
|
+
<li><a href="../JobBoss.html">JobBoss</a></li>
|
129
|
+
|
130
|
+
<li><a href="../JobBoss/Boss.html">JobBoss::Boss</a></li>
|
131
|
+
|
132
|
+
<li><a href="../JobBoss/Config.html">JobBoss::Config</a></li>
|
133
|
+
|
134
|
+
<li><a href="../JobBoss/Job.html">JobBoss::Job</a></li>
|
135
|
+
|
136
|
+
<li><a href="../JobBoss/Queuer.html">JobBoss::Queuer</a></li>
|
137
|
+
|
138
|
+
<li><a href="../ActiveSupport.html">ActiveSupport</a></li>
|
139
|
+
|
140
|
+
<li><a href="../ActiveSupport/TestCase.html">ActiveSupport::TestCase</a></li>
|
141
|
+
|
142
|
+
<li><a href="../CreateJobs.html">CreateJobs</a></li>
|
143
|
+
|
144
|
+
<li><a href="../DaemonTest.html">DaemonTest</a></li>
|
145
|
+
|
146
|
+
<li><a href="../MathJobs.html">MathJobs</a></li>
|
147
|
+
|
148
|
+
<li><a href="../SleepJobs.html">SleepJobs</a></li>
|
149
|
+
|
150
|
+
<li><a href="../StringJobs.html">StringJobs</a></li>
|
151
|
+
|
152
|
+
</ul>
|
153
|
+
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
154
|
+
</div>
|
155
|
+
|
156
|
+
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
|
160
|
+
<div id="documentation">
|
161
|
+
<h1 class="class">ActiveSupport::TestCase</h1>
|
162
|
+
|
163
|
+
<div id="description">
|
164
|
+
|
165
|
+
</div>
|
166
|
+
|
167
|
+
<!-- Constants -->
|
168
|
+
|
169
|
+
|
170
|
+
<!-- Attributes -->
|
171
|
+
|
172
|
+
|
173
|
+
<!-- Methods -->
|
174
|
+
|
175
|
+
<div id="public-instance-method-details" class="method-section section">
|
176
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
177
|
+
|
178
|
+
|
179
|
+
<div id="assert-pid-not-running-method" class="method-detail ">
|
180
|
+
<a name="method-i-assert_pid_not_running"></a>
|
181
|
+
|
182
|
+
<div class="method-heading">
|
183
|
+
|
184
|
+
<span class="method-name">assert_pid_not_running</span><span
|
185
|
+
class="method-args">(pid)</span>
|
186
|
+
<span class="method-click-advice">click to toggle source</span>
|
187
|
+
|
188
|
+
</div>
|
189
|
+
|
190
|
+
<div class="method-description">
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
<div class="method-source-code"
|
197
|
+
id="assert-pid-not-running-source">
|
198
|
+
<pre>
|
199
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 35</span>
|
200
|
+
35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assert_pid_not_running</span>(<span class="ruby-identifier">pid</span>)
|
201
|
+
36: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span> <span class="ruby-keyword kw">do</span>
|
202
|
+
37: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">pid</span>)
|
203
|
+
38: <span class="ruby-keyword kw">end</span>
|
204
|
+
39: <span class="ruby-keyword kw">end</span></pre>
|
205
|
+
</div>
|
206
|
+
|
207
|
+
</div>
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
</div>
|
213
|
+
|
214
|
+
|
215
|
+
<div id="assert-pid-running-method" class="method-detail ">
|
216
|
+
<a name="method-i-assert_pid_running"></a>
|
217
|
+
|
218
|
+
<div class="method-heading">
|
219
|
+
|
220
|
+
<span class="method-name">assert_pid_running</span><span
|
221
|
+
class="method-args">(pid)</span>
|
222
|
+
<span class="method-click-advice">click to toggle source</span>
|
223
|
+
|
224
|
+
</div>
|
225
|
+
|
226
|
+
<div class="method-description">
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
<div class="method-source-code"
|
233
|
+
id="assert-pid-running-source">
|
234
|
+
<pre>
|
235
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 29</span>
|
236
|
+
29: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assert_pid_running</span>(<span class="ruby-identifier">pid</span>)
|
237
|
+
30: <span class="ruby-identifier">assert_nothing_raised</span> <span class="ruby-keyword kw">do</span>
|
238
|
+
31: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">pid</span>)
|
239
|
+
32: <span class="ruby-keyword kw">end</span>
|
240
|
+
33: <span class="ruby-keyword kw">end</span></pre>
|
241
|
+
</div>
|
242
|
+
|
243
|
+
</div>
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
</div>
|
249
|
+
|
250
|
+
|
251
|
+
<div id="clean-app-environment-method" class="method-detail ">
|
252
|
+
<a name="method-i-clean_app_environment"></a>
|
253
|
+
|
254
|
+
<div class="method-heading">
|
255
|
+
|
256
|
+
<span class="method-name">clean_app_environment</span><span
|
257
|
+
class="method-args">()</span>
|
258
|
+
<span class="method-click-advice">click to toggle source</span>
|
259
|
+
|
260
|
+
</div>
|
261
|
+
|
262
|
+
<div class="method-description">
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
<div class="method-source-code"
|
269
|
+
id="clean-app-environment-source">
|
270
|
+
<pre>
|
271
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 24</span>
|
272
|
+
24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clean_app_environment</span>
|
273
|
+
25: <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-ivar">@db_path</span>, <span class="ruby-value str">'*'</span>)).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-identifier">path</span>) }
|
274
|
+
26: <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-ivar">@app_root_path</span>, <span class="ruby-value str">'log'</span>, <span class="ruby-value str">'*'</span>)).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-identifier">path</span>) }
|
275
|
+
27: <span class="ruby-keyword kw">end</span></pre>
|
276
|
+
</div>
|
277
|
+
|
278
|
+
</div>
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
</div>
|
284
|
+
|
285
|
+
|
286
|
+
<div id="get-pid-from-startup-method" class="method-detail ">
|
287
|
+
<a name="method-i-get_pid_from_startup"></a>
|
288
|
+
|
289
|
+
<div class="method-heading">
|
290
|
+
|
291
|
+
<span class="method-name">get_pid_from_startup</span><span
|
292
|
+
class="method-args">(output)</span>
|
293
|
+
<span class="method-click-advice">click to toggle source</span>
|
294
|
+
|
295
|
+
</div>
|
296
|
+
|
297
|
+
<div class="method-description">
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
<div class="method-source-code"
|
304
|
+
id="get-pid-from-startup-source">
|
305
|
+
<pre>
|
306
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 59</span>
|
307
|
+
59: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_pid_from_startup</span>(<span class="ruby-identifier">output</span>)
|
308
|
+
60: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/job_boss: process with pid (\d+) started./</span>)[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span>
|
309
|
+
61: <span class="ruby-keyword kw">end</span></pre>
|
310
|
+
</div>
|
311
|
+
|
312
|
+
</div>
|
313
|
+
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
</div>
|
318
|
+
|
319
|
+
|
320
|
+
<div id="restart-daemon-method" class="method-detail ">
|
321
|
+
<a name="method-i-restart_daemon"></a>
|
322
|
+
|
323
|
+
<div class="method-heading">
|
324
|
+
|
325
|
+
<span class="method-name">restart_daemon</span><span
|
326
|
+
class="method-args">()</span>
|
327
|
+
<span class="method-click-advice">click to toggle source</span>
|
328
|
+
|
329
|
+
</div>
|
330
|
+
|
331
|
+
<div class="method-description">
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
<div class="method-source-code"
|
338
|
+
id="restart-daemon-source">
|
339
|
+
<pre>
|
340
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 88</span>
|
341
|
+
88: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restart_daemon</span>
|
342
|
+
89: <span class="ruby-identifier">assert_pid_running</span>(<span class="ruby-ivar">@daemon_pid</span>)
|
343
|
+
90:
|
344
|
+
91: <span class="ruby-identifier">output</span> = <span class="ruby-value">`bin/job_boss restart`</span>
|
345
|
+
92:
|
346
|
+
93: <span class="ruby-comment cmt"># Give the daemon a bit of time to stop</span>
|
347
|
+
94: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">0.5</span>)
|
348
|
+
95: <span class="ruby-identifier">assert_pid_not_running</span>(<span class="ruby-ivar">@daemon_pid</span>)
|
349
|
+
96:
|
350
|
+
97: <span class="ruby-ivar">@daemon_pid</span> = <span class="ruby-identifier">get_pid_from_startup</span>(<span class="ruby-identifier">output</span>)
|
351
|
+
98:
|
352
|
+
99: <span class="ruby-identifier">assert_pid_running</span>(<span class="ruby-ivar">@daemon_pid</span>)
|
353
|
+
100: <span class="ruby-keyword kw">end</span></pre>
|
354
|
+
</div>
|
355
|
+
|
356
|
+
</div>
|
357
|
+
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
</div>
|
362
|
+
|
363
|
+
|
364
|
+
<div id="setup-paths-method" class="method-detail ">
|
365
|
+
<a name="method-i-setup_paths"></a>
|
366
|
+
|
367
|
+
<div class="method-heading">
|
368
|
+
|
369
|
+
<span class="method-name">setup_paths</span><span
|
370
|
+
class="method-args">()</span>
|
371
|
+
<span class="method-click-advice">click to toggle source</span>
|
372
|
+
|
373
|
+
</div>
|
374
|
+
|
375
|
+
<div class="method-description">
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
<div class="method-source-code"
|
382
|
+
id="setup-paths-source">
|
383
|
+
<pre>
|
384
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 17</span>
|
385
|
+
17: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setup_paths</span>
|
386
|
+
18: <span class="ruby-ivar">@app_root_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'test'</span>, <span class="ruby-value str">'app_root'</span>)
|
387
|
+
19: <span class="ruby-ivar">@db_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@app_root_path</span>, <span class="ruby-value str">'db'</span>)
|
388
|
+
20: <span class="ruby-ivar">@log_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@app_root_path</span>, <span class="ruby-value str">'log'</span>, <span class="ruby-value str">'job_boss.log'</span>)
|
389
|
+
21: <span class="ruby-ivar">@db_yaml_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@app_root_path</span>, <span class="ruby-value str">'config'</span>, <span class="ruby-value str">'database.yml'</span>)
|
390
|
+
22: <span class="ruby-keyword kw">end</span></pre>
|
391
|
+
</div>
|
392
|
+
|
393
|
+
</div>
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
</div>
|
399
|
+
|
400
|
+
|
401
|
+
<div id="start-daemon-method" class="method-detail ">
|
402
|
+
<a name="method-i-start_daemon"></a>
|
403
|
+
|
404
|
+
<div class="method-heading">
|
405
|
+
|
406
|
+
<span class="method-name">start_daemon</span><span
|
407
|
+
class="method-args">(options)</span>
|
408
|
+
<span class="method-click-advice">click to toggle source</span>
|
409
|
+
|
410
|
+
</div>
|
411
|
+
|
412
|
+
<div class="method-description">
|
413
|
+
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
<div class="method-source-code"
|
419
|
+
id="start-daemon-source">
|
420
|
+
<pre>
|
421
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 41</span>
|
422
|
+
41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_daemon</span>(<span class="ruby-identifier">options</span>)
|
423
|
+
42: <span class="ruby-identifier">clean_app_environment</span>
|
424
|
+
43:
|
425
|
+
44: <span class="ruby-identifier">stop_daemon</span>
|
426
|
+
45:
|
427
|
+
46: <span class="ruby-identifier">option_string</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">collect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
428
|
+
47: <span class="ruby-value str">'--'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'_'</span>, <span class="ruby-value str">'-'</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">" "</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_s</span>
|
429
|
+
48: <span class="ruby-keyword kw">end</span>
|
430
|
+
49:
|
431
|
+
50: <span class="ruby-identifier">output</span> = <span class="ruby-node">`bin/job_boss start -- #{option_string.join(' ')}`</span>
|
432
|
+
51:
|
433
|
+
52: <span class="ruby-ivar">@daemon_pid</span> = <span class="ruby-identifier">get_pid_from_startup</span>(<span class="ruby-identifier">output</span>)
|
434
|
+
53:
|
435
|
+
54: <span class="ruby-identifier">assert_pid_running</span>(<span class="ruby-ivar">@daemon_pid</span>)
|
436
|
+
55:
|
437
|
+
56: <span class="ruby-ivar">@daemon_pid</span>
|
438
|
+
57: <span class="ruby-keyword kw">end</span></pre>
|
439
|
+
</div>
|
440
|
+
|
441
|
+
</div>
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
|
446
|
+
</div>
|
447
|
+
|
448
|
+
|
449
|
+
<div id="stop-daemon-method" class="method-detail ">
|
450
|
+
<a name="method-i-stop_daemon"></a>
|
451
|
+
|
452
|
+
<div class="method-heading">
|
453
|
+
|
454
|
+
<span class="method-name">stop_daemon</span><span
|
455
|
+
class="method-args">()</span>
|
456
|
+
<span class="method-click-advice">click to toggle source</span>
|
457
|
+
|
458
|
+
</div>
|
459
|
+
|
460
|
+
<div class="method-description">
|
461
|
+
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
<div class="method-source-code"
|
467
|
+
id="stop-daemon-source">
|
468
|
+
<pre>
|
469
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 80</span>
|
470
|
+
80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop_daemon</span>
|
471
|
+
81: <span class="ruby-value">`bin/job_boss stop`</span>
|
472
|
+
82:
|
473
|
+
83: <span class="ruby-comment cmt"># Give the daemon a bit of time to stop</span>
|
474
|
+
84: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">0.5</span>)
|
475
|
+
85: <span class="ruby-identifier">assert_pid_not_running</span>(<span class="ruby-ivar">@daemon_pid</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@daemon_pid</span>
|
476
|
+
86: <span class="ruby-keyword kw">end</span></pre>
|
477
|
+
</div>
|
478
|
+
|
479
|
+
</div>
|
480
|
+
|
481
|
+
|
482
|
+
|
483
|
+
|
484
|
+
</div>
|
485
|
+
|
486
|
+
|
487
|
+
<div id="wait-for-file-method" class="method-detail ">
|
488
|
+
<a name="method-i-wait_for_file"></a>
|
489
|
+
|
490
|
+
<div class="method-heading">
|
491
|
+
|
492
|
+
<span class="method-name">wait_for_file</span><span
|
493
|
+
class="method-args">(file_path, timeout = 5)</span>
|
494
|
+
<span class="method-click-advice">click to toggle source</span>
|
495
|
+
|
496
|
+
</div>
|
497
|
+
|
498
|
+
<div class="method-description">
|
499
|
+
|
500
|
+
|
501
|
+
|
502
|
+
|
503
|
+
|
504
|
+
<div class="method-source-code"
|
505
|
+
id="wait-for-file-source">
|
506
|
+
<pre>
|
507
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 63</span>
|
508
|
+
63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait_for_file</span>(<span class="ruby-identifier">file_path</span>, <span class="ruby-identifier">timeout</span> = <span class="ruby-value">5</span>)
|
509
|
+
64: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
510
|
+
65: <span class="ruby-keyword kw">until</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">file_path</span>)
|
511
|
+
66: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">1</span>)
|
512
|
+
67:
|
513
|
+
68: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"File failed to appear!"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">></span> <span class="ruby-identifier">timeout</span>
|
514
|
+
69: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
515
|
+
70: <span class="ruby-keyword kw">end</span>
|
516
|
+
71: <span class="ruby-keyword kw">end</span></pre>
|
517
|
+
</div>
|
518
|
+
|
519
|
+
</div>
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
|
524
|
+
</div>
|
525
|
+
|
526
|
+
|
527
|
+
<div id="wait-until-job-assigned-method" class="method-detail ">
|
528
|
+
<a name="method-i-wait_until_job_assigned"></a>
|
529
|
+
|
530
|
+
<div class="method-heading">
|
531
|
+
|
532
|
+
<span class="method-name">wait_until_job_assigned</span><span
|
533
|
+
class="method-args">(job, wait_interval = 0.5)</span>
|
534
|
+
<span class="method-click-advice">click to toggle source</span>
|
535
|
+
|
536
|
+
</div>
|
537
|
+
|
538
|
+
<div class="method-description">
|
539
|
+
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
<div class="method-source-code"
|
545
|
+
id="wait-until-job-assigned-source">
|
546
|
+
<pre>
|
547
|
+
<span class="ruby-comment cmt"># File test/test_helper.rb, line 73</span>
|
548
|
+
73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait_until_job_assigned</span>(<span class="ruby-identifier">job</span>, <span class="ruby-identifier">wait_interval</span> = <span class="ruby-value">0.5</span>)
|
549
|
+
74: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">job</span>.<span class="ruby-identifier">assigned?</span>
|
550
|
+
75: <span class="ruby-identifier">sleep</span>(<span class="ruby-identifier">wait_interval</span>)
|
551
|
+
76: <span class="ruby-identifier">job</span>.<span class="ruby-identifier">reload</span>
|
552
|
+
77: <span class="ruby-keyword kw">end</span>
|
553
|
+
78: <span class="ruby-keyword kw">end</span></pre>
|
554
|
+
</div>
|
555
|
+
|
556
|
+
</div>
|
557
|
+
|
558
|
+
|
559
|
+
|
560
|
+
|
561
|
+
</div>
|
562
|
+
|
563
|
+
|
564
|
+
</div>
|
565
|
+
|
566
|
+
|
567
|
+
</div>
|
568
|
+
|
569
|
+
|
570
|
+
<div id="rdoc-debugging-section-dump" class="debugging-section">
|
571
|
+
|
572
|
+
<p>Disabled; run with --debug to generate this.</p>
|
573
|
+
|
574
|
+
</div>
|
575
|
+
|
576
|
+
<div id="validator-badges">
|
577
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
578
|
+
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
|
579
|
+
Rdoc Generator</a> 1.1.6</small>.</p>
|
580
|
+
</div>
|
581
|
+
|
582
|
+
</body>
|
583
|
+
</html>
|
584
|
+
|