job_boss 0.2

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 (47) hide show
  1. data/README.markdown +43 -0
  2. data/Rakefile +15 -0
  3. data/bin/job_boss +27 -0
  4. data/doc/ActiveRecord/Base.html +343 -0
  5. data/doc/ActiveRecord.html +185 -0
  6. data/doc/CreateJobs.html +256 -0
  7. data/doc/JobBoss/Boss.html +413 -0
  8. data/doc/JobBoss/Config.html +342 -0
  9. data/doc/JobBoss/Job.html +754 -0
  10. data/doc/JobBoss/Queuer.html +231 -0
  11. data/doc/JobBoss.html +480 -0
  12. data/doc/Mongrel/HttpServer.html +275 -0
  13. data/doc/Mongrel.html +185 -0
  14. data/doc/Passenger/Railz/RequestHandler.html +271 -0
  15. data/doc/Passenger/Railz.html +185 -0
  16. data/doc/Passenger.html +185 -0
  17. data/doc/PhusionPassenger/Rack/RequestHandler.html +271 -0
  18. data/doc/PhusionPassenger/Rack.html +185 -0
  19. data/doc/PhusionPassenger/Railz/RequestHandler.html +271 -0
  20. data/doc/PhusionPassenger/Railz.html +185 -0
  21. data/doc/PhusionPassenger.html +187 -0
  22. data/doc/Rakefile.html +115 -0
  23. data/doc/Spawn/SpawnId.html +276 -0
  24. data/doc/Spawn.html +742 -0
  25. data/doc/bin/job_boss.html +58 -0
  26. data/doc/created.rid +9 -0
  27. data/doc/index.html +126 -0
  28. data/doc/lib/job_boss/boss_rb.html +64 -0
  29. data/doc/lib/job_boss/capistrano_rb.html +60 -0
  30. data/doc/lib/job_boss/configuror_rb.html +54 -0
  31. data/doc/lib/job_boss/job_rb.html +56 -0
  32. data/doc/lib/job_boss/queuer_rb.html +56 -0
  33. data/doc/lib/migrate_rb.html +52 -0
  34. data/doc/rdoc.css +706 -0
  35. data/doc/vendor/spawn/CHANGELOG.html +275 -0
  36. data/doc/vendor/spawn/LICENSE.html +151 -0
  37. data/doc/vendor/spawn/init_rb.html +54 -0
  38. data/doc/vendor/spawn/lib/patches_rb.html +56 -0
  39. data/doc/vendor/spawn/lib/spawn_rb.html +52 -0
  40. data/job_boss.gemspec +26 -0
  41. data/lib/job_boss/boss.rb +153 -0
  42. data/lib/job_boss/capistrano.rb +8 -0
  43. data/lib/job_boss/configuror.rb +40 -0
  44. data/lib/job_boss/job.rb +155 -0
  45. data/lib/job_boss/queuer.rb +37 -0
  46. data/lib/migrate.rb +27 -0
  47. metadata +151 -0
data/README.markdown ADDED
@@ -0,0 +1,43 @@
1
+ # job_boss
2
+
3
+ ## Credits
4
+
5
+ The idea for this gem came from trying to use working/starling and not having much success with stability. After some discussions with my colleagues (Neil Cook and Justin Hahn) and some good ideas, I created job_boss
6
+
7
+ ## Purpose
8
+
9
+ job_boss allows you to have a daemon much in the same way as workling which allows you to process a series of jobs asynchronously. job_boss, however, uses ActiveRecord to store queued job requests in a database thus simplifying dependencies. This allows for us to process chunks of work in parallel, across multiple servers, without needing much setup
10
+
11
+ ## Usage
12
+
13
+ Add the gem to your Gemfile
14
+
15
+ gem 'job_boss'
16
+
17
+ or install it
18
+
19
+ gem install job_boss
20
+
21
+ Create a directory to store classes which define code which can be executed by the job boss (the default directory is 'app/jobs') and create class files such as this:
22
+
23
+ # app/jobs/math_jobs.rb
24
+ class MathJobs
25
+ def is_prime?(i)
26
+ ('1' * i) !~ /^1?$|^(11+?)\1+$/
27
+ end
28
+ end
29
+
30
+ Start up your boss:
31
+
32
+ job_boss start
33
+
34
+ From your Rails code or in a console (this functionality should probably be encapsulated in the job_boss gem):
35
+
36
+ require 'job_boss/boss'
37
+ jobs = (0..1000).collect do |i|
38
+ JobBoss::Boss.queue.math.is_prime?(i)
39
+ end
40
+
41
+ JobBoss::Job.wait_for_jobs(jobs) # Will sleep until the jobs are all complete
42
+
43
+ JobBoss::Job.result_hash(jobs) # => {[0]=>"f", [1]=>"f", [2]=>true, [3]=>true, [4]=>"f", ... }
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'job_boss'
2
+
3
+ namespace :job_boss do
4
+
5
+ task :start do
6
+ boss = JobBoss.new
7
+ boss.start
8
+ end
9
+
10
+ task :stop do
11
+ end
12
+
13
+ task :restart do
14
+ end
15
+ end
data/bin/job_boss ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'daemons'
5
+
6
+ BOSS_PID = Process.pid
7
+
8
+ working_dir = Dir.pwd
9
+
10
+ daemons_options = {
11
+ :dir_mode => :script,
12
+ :dir => 'pids'
13
+ }
14
+
15
+ Daemons.run_proc('job_boss', daemons_options) do
16
+ Dir.chdir(working_dir)
17
+
18
+ require 'job_boss/boss'
19
+
20
+ command, daemon_options, app_options = Daemons::Controller.split_argv(ARGV)
21
+
22
+ JobBoss::Boss.config.parse_args(app_options, :working_dir => working_dir)
23
+
24
+ boss = JobBoss::Boss.new
25
+
26
+ boss.start
27
+ end
@@ -0,0 +1,343 @@
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: ActiveRecord::Base</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="../vendor/spawn/lib/patches_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="vendor/spawn/lib/patches.rb">vendor/spawn/lib/patches.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-c-clear_reloadable_connections%21">::clear_reloadable_connections!</a></li>
73
+
74
+ <li><a href="#method-c-spawn_reconnect">::spawn_reconnect</a></li>
75
+
76
+ <li><a href="#method-c-spawn_reconnect">::spawn_reconnect</a></li>
77
+
78
+ </ul>
79
+ </div>
80
+
81
+
82
+ <!-- Included Modules -->
83
+
84
+ </div>
85
+
86
+ <div id="project-metadata">
87
+
88
+
89
+ <div id="fileindex-section" class="section project-section">
90
+ <h3 class="section-header">Files</h3>
91
+ <ul>
92
+
93
+ <li class="file"><a href="../Rakefile.html">Rakefile</a></li>
94
+
95
+ <li class="file"><a href="../vendor/spawn/CHANGELOG.html">CHANGELOG</a></li>
96
+
97
+ <li class="file"><a href="../vendor/spawn/LICENSE.html">LICENSE</a></li>
98
+
99
+ </ul>
100
+ </div>
101
+
102
+
103
+ <div id="classindex-section" class="section project-section">
104
+ <h3 class="section-header">Class Index
105
+ <span class="search-toggle"><img src="../images/find.png"
106
+ height="16" width="16" alt="[+]"
107
+ title="show/hide quicksearch" /></span></h3>
108
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
109
+ <fieldset>
110
+ <legend>Quicksearch</legend>
111
+ <input type="text" name="quicksearch" value=""
112
+ class="quicksearch-field" />
113
+ </fieldset>
114
+ </form>
115
+
116
+ <ul class="link-list">
117
+
118
+ <li><a href="../JobBoss.html">JobBoss</a></li>
119
+
120
+ <li><a href="../JobBoss/Boss.html">JobBoss::Boss</a></li>
121
+
122
+ <li><a href="../JobBoss/Config.html">JobBoss::Config</a></li>
123
+
124
+ <li><a href="../JobBoss/Job.html">JobBoss::Job</a></li>
125
+
126
+ <li><a href="../JobBoss/Queuer.html">JobBoss::Queuer</a></li>
127
+
128
+ <li><a href="../PhusionPassenger.html">PhusionPassenger</a></li>
129
+
130
+ <li><a href="../PhusionPassenger/Rack.html">PhusionPassenger::Rack</a></li>
131
+
132
+ <li><a href="../PhusionPassenger/Rack/RequestHandler.html">PhusionPassenger::Rack::RequestHandler</a></li>
133
+
134
+ <li><a href="../PhusionPassenger/Railz.html">PhusionPassenger::Railz</a></li>
135
+
136
+ <li><a href="../PhusionPassenger/Railz/RequestHandler.html">PhusionPassenger::Railz::RequestHandler</a></li>
137
+
138
+ <li><a href="../Passenger.html">Passenger</a></li>
139
+
140
+ <li><a href="../Passenger/Railz.html">Passenger::Railz</a></li>
141
+
142
+ <li><a href="../Passenger/Railz/RequestHandler.html">Passenger::Railz::RequestHandler</a></li>
143
+
144
+ <li><a href="../ActiveRecord.html">ActiveRecord</a></li>
145
+
146
+ <li><a href="../ActiveRecord/Base.html">ActiveRecord::Base</a></li>
147
+
148
+ <li><a href="../Mongrel.html">Mongrel</a></li>
149
+
150
+ <li><a href="../Mongrel/HttpServer.html">Mongrel::HttpServer</a></li>
151
+
152
+ <li><a href="../Spawn.html">Spawn</a></li>
153
+
154
+ <li><a href="../Spawn/SpawnId.html">Spawn::SpawnId</a></li>
155
+
156
+ <li><a href="../CreateJobs.html">CreateJobs</a></li>
157
+
158
+ </ul>
159
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
160
+ </div>
161
+
162
+
163
+ </div>
164
+ </div>
165
+
166
+ <div id="documentation">
167
+ <h1 class="class">ActiveRecord::Base</h1>
168
+
169
+ <div id="description">
170
+ <p>
171
+ see
172
+ activerecord/lib/active_record/connection_adaptors/abstract/connection_specification.rb
173
+ </p>
174
+
175
+ </div>
176
+
177
+ <!-- Constants -->
178
+
179
+
180
+ <!-- Attributes -->
181
+
182
+
183
+ <!-- Methods -->
184
+
185
+ <div id="public-class-method-details" class="method-section section">
186
+ <h3 class="section-header">Public Class Methods</h3>
187
+
188
+
189
+ <div id="clear-reloadable-connections--method" class="method-detail ">
190
+ <a name="method-c-clear_reloadable_connections%21"></a>
191
+
192
+ <div class="method-heading">
193
+
194
+ <span class="method-name">clear_reloadable_connections!</span><span
195
+ class="method-args">()</span>
196
+ <span class="method-click-advice">click to toggle source</span>
197
+
198
+ </div>
199
+
200
+ <div class="method-description">
201
+
202
+ <p>
203
+ monkey patch to fix threading problems, see: <a
204
+ href="http://dev.rubyonrails.org/ticket/7579">dev.rubyonrails.org/ticket/7579</a>
205
+ </p>
206
+
207
+
208
+
209
+ <div class="method-source-code"
210
+ id="clear-reloadable-connections--source">
211
+ <pre>
212
+ <span class="ruby-comment cmt"># File vendor/spawn/lib/patches.rb, line 29</span>
213
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clear_reloadable_connections!</span>
214
+ 30: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">@@allow_concurrency</span>
215
+ 31: <span class="ruby-comment cmt"># Hash keyed by thread_id in @@active_connections. Hash of hashes.</span>
216
+ 32: <span class="ruby-identifier">@@active_connections</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">thread_id</span>, <span class="ruby-identifier">conns</span><span class="ruby-operator">|</span>
217
+ 33: <span class="ruby-identifier">conns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">conn</span><span class="ruby-operator">|</span>
218
+ 34: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conn</span>.<span class="ruby-identifier">requires_reloading?</span>
219
+ 35: <span class="ruby-identifier">conn</span>.<span class="ruby-identifier">disconnect!</span>
220
+ 36: <span class="ruby-identifier">@@active_connections</span>[<span class="ruby-identifier">thread_id</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">name</span>)
221
+ 37: <span class="ruby-keyword kw">end</span>
222
+ 38: <span class="ruby-keyword kw">end</span>
223
+ 39: <span class="ruby-keyword kw">end</span>
224
+ 40: <span class="ruby-keyword kw">else</span>
225
+ 41: <span class="ruby-comment cmt"># Just one level hash, no concurrency.</span>
226
+ 42: <span class="ruby-identifier">@@active_connections</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">conn</span><span class="ruby-operator">|</span>
227
+ 43: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">conn</span>.<span class="ruby-identifier">requires_reloading?</span>
228
+ 44: <span class="ruby-identifier">conn</span>.<span class="ruby-identifier">disconnect!</span>
229
+ 45: <span class="ruby-identifier">@@active_connections</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">name</span>)
230
+ 46: <span class="ruby-keyword kw">end</span>
231
+ 47: <span class="ruby-keyword kw">end</span>
232
+ 48: <span class="ruby-keyword kw">end</span>
233
+ 49: <span class="ruby-keyword kw">end</span></pre>
234
+ </div>
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div>
242
+
243
+
244
+ <div id="spawn-reconnect-method" class="method-detail ">
245
+ <a name="method-c-spawn_reconnect"></a>
246
+
247
+ <div class="method-heading">
248
+
249
+ <span class="method-name">spawn_reconnect</span><span
250
+ class="method-args">(klass=self)</span>
251
+ <span class="method-click-advice">click to toggle source</span>
252
+
253
+ </div>
254
+
255
+ <div class="method-description">
256
+
257
+
258
+
259
+
260
+
261
+ <div class="method-source-code"
262
+ id="spawn-reconnect-source">
263
+ <pre>
264
+ <span class="ruby-comment cmt"># File vendor/spawn/lib/patches.rb, line 14</span>
265
+ 14: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">spawn_reconnect</span>(<span class="ruby-identifier">klass</span>=<span class="ruby-keyword kw">self</span>)
266
+ 15: <span class="ruby-identifier">spec</span> = <span class="ruby-identifier">@@defined_connections</span>[<span class="ruby-identifier">klass</span>.<span class="ruby-identifier">name</span>]
267
+ 16: <span class="ruby-identifier">konn</span> = <span class="ruby-identifier">active_connections</span>[<span class="ruby-identifier">klass</span>.<span class="ruby-identifier">name</span>]
268
+ 17: <span class="ruby-comment cmt"># remove from internal arrays before calling establish_connection so that</span>
269
+ 18: <span class="ruby-comment cmt"># the connection isn't disconnected when it calls AR::Base.remove_connection</span>
270
+ 19: <span class="ruby-identifier">@@defined_connections</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">spec</span> }
271
+ 20: <span class="ruby-identifier">active_connections</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">konn</span> }
272
+ 21: <span class="ruby-identifier">establish_connection</span>(<span class="ruby-identifier">spec</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">config</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>)
273
+ 22: <span class="ruby-keyword kw">end</span></pre>
274
+ </div>
275
+
276
+ </div>
277
+
278
+
279
+
280
+
281
+ </div>
282
+
283
+
284
+ <div id="spawn-reconnect-method" class="method-detail ">
285
+ <a name="method-c-spawn_reconnect"></a>
286
+
287
+ <div class="method-heading">
288
+
289
+ <span class="method-name">spawn_reconnect</span><span
290
+ class="method-args">(klass=self)</span>
291
+ <span class="method-click-advice">click to toggle source</span>
292
+
293
+ </div>
294
+
295
+ <div class="method-description">
296
+
297
+
298
+
299
+
300
+
301
+ <div class="method-source-code"
302
+ id="spawn-reconnect-source">
303
+ <pre>
304
+ <span class="ruby-comment cmt"># File vendor/spawn/lib/patches.rb, line 5</span>
305
+ 5: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">spawn_reconnect</span>(<span class="ruby-identifier">klass</span>=<span class="ruby-keyword kw">self</span>)
306
+ 6: <span class="ruby-comment cmt"># keep ancestors' connection_handlers around to avoid them being garbage collected in the forked child</span>
307
+ 7: <span class="ruby-identifier">@@ancestor_connection_handlers</span> <span class="ruby-operator">||=</span> []
308
+ 8: <span class="ruby-identifier">@@ancestor_connection_handlers</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">connection_handler</span>
309
+ 9: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">connection_handler</span> = <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionHandler</span>.<span class="ruby-identifier">new</span>
310
+ 10:
311
+ 11: <span class="ruby-identifier">establish_connection</span>
312
+ 12: <span class="ruby-keyword kw">end</span></pre>
313
+ </div>
314
+
315
+ </div>
316
+
317
+
318
+
319
+
320
+ </div>
321
+
322
+
323
+ </div>
324
+
325
+
326
+ </div>
327
+
328
+
329
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
330
+
331
+ <p>Disabled; run with --debug to generate this.</p>
332
+
333
+ </div>
334
+
335
+ <div id="validator-badges">
336
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
337
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
338
+ Rdoc Generator</a> 1.1.6</small>.</p>
339
+ </div>
340
+
341
+ </body>
342
+ </html>
343
+
@@ -0,0 +1,185 @@
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>Module: ActiveRecord</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="module">
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
+ </ul>
42
+ </div>
43
+ </div>
44
+
45
+
46
+ </div>
47
+
48
+ <div id="class-metadata">
49
+
50
+ <!-- Parent Class -->
51
+
52
+
53
+ <!-- Namespace Contents -->
54
+
55
+ <div id="namespace-list-section" class="section">
56
+ <h3 class="section-header">Namespace</h3>
57
+ <ul class="link-list">
58
+
59
+ <li><span class="type">CLASS</span> <a href="ActiveRecord/Base.html">ActiveRecord::Base</a></li>
60
+
61
+ </ul>
62
+ </div>
63
+
64
+
65
+ <!-- Method Quickref -->
66
+
67
+
68
+ <!-- Included Modules -->
69
+
70
+ </div>
71
+
72
+ <div id="project-metadata">
73
+
74
+
75
+ <div id="fileindex-section" class="section project-section">
76
+ <h3 class="section-header">Files</h3>
77
+ <ul>
78
+
79
+ <li class="file"><a href="./Rakefile.html">Rakefile</a></li>
80
+
81
+ <li class="file"><a href="./vendor/spawn/CHANGELOG.html">CHANGELOG</a></li>
82
+
83
+ <li class="file"><a href="./vendor/spawn/LICENSE.html">LICENSE</a></li>
84
+
85
+ </ul>
86
+ </div>
87
+
88
+
89
+ <div id="classindex-section" class="section project-section">
90
+ <h3 class="section-header">Class Index
91
+ <span class="search-toggle"><img src="./images/find.png"
92
+ height="16" width="16" alt="[+]"
93
+ title="show/hide quicksearch" /></span></h3>
94
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
95
+ <fieldset>
96
+ <legend>Quicksearch</legend>
97
+ <input type="text" name="quicksearch" value=""
98
+ class="quicksearch-field" />
99
+ </fieldset>
100
+ </form>
101
+
102
+ <ul class="link-list">
103
+
104
+ <li><a href="./JobBoss.html">JobBoss</a></li>
105
+
106
+ <li><a href="./JobBoss/Boss.html">JobBoss::Boss</a></li>
107
+
108
+ <li><a href="./JobBoss/Config.html">JobBoss::Config</a></li>
109
+
110
+ <li><a href="./JobBoss/Job.html">JobBoss::Job</a></li>
111
+
112
+ <li><a href="./JobBoss/Queuer.html">JobBoss::Queuer</a></li>
113
+
114
+ <li><a href="./PhusionPassenger.html">PhusionPassenger</a></li>
115
+
116
+ <li><a href="./PhusionPassenger/Rack.html">PhusionPassenger::Rack</a></li>
117
+
118
+ <li><a href="./PhusionPassenger/Rack/RequestHandler.html">PhusionPassenger::Rack::RequestHandler</a></li>
119
+
120
+ <li><a href="./PhusionPassenger/Railz.html">PhusionPassenger::Railz</a></li>
121
+
122
+ <li><a href="./PhusionPassenger/Railz/RequestHandler.html">PhusionPassenger::Railz::RequestHandler</a></li>
123
+
124
+ <li><a href="./Passenger.html">Passenger</a></li>
125
+
126
+ <li><a href="./Passenger/Railz.html">Passenger::Railz</a></li>
127
+
128
+ <li><a href="./Passenger/Railz/RequestHandler.html">Passenger::Railz::RequestHandler</a></li>
129
+
130
+ <li><a href="./ActiveRecord.html">ActiveRecord</a></li>
131
+
132
+ <li><a href="./ActiveRecord/Base.html">ActiveRecord::Base</a></li>
133
+
134
+ <li><a href="./Mongrel.html">Mongrel</a></li>
135
+
136
+ <li><a href="./Mongrel/HttpServer.html">Mongrel::HttpServer</a></li>
137
+
138
+ <li><a href="./Spawn.html">Spawn</a></li>
139
+
140
+ <li><a href="./Spawn/SpawnId.html">Spawn::SpawnId</a></li>
141
+
142
+ <li><a href="./CreateJobs.html">CreateJobs</a></li>
143
+
144
+ </ul>
145
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
146
+ </div>
147
+
148
+
149
+ </div>
150
+ </div>
151
+
152
+ <div id="documentation">
153
+ <h1 class="module">ActiveRecord</h1>
154
+
155
+ <div id="description">
156
+
157
+ </div>
158
+
159
+ <!-- Constants -->
160
+
161
+
162
+ <!-- Attributes -->
163
+
164
+
165
+ <!-- Methods -->
166
+
167
+
168
+ </div>
169
+
170
+
171
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
172
+
173
+ <p>Disabled; run with --debug to generate this.</p>
174
+
175
+ </div>
176
+
177
+ <div id="validator-badges">
178
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
179
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
180
+ Rdoc Generator</a> 1.1.6</small>.</p>
181
+ </div>
182
+
183
+ </body>
184
+ </html>
185
+