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.
- data/README.markdown +39 -7
- data/bin/job_boss +4 -2
- data/doc/ActiveSupport/TestCase.html +106 -87
- data/doc/ActiveSupport.html +6 -0
- data/doc/CreateJobs.html +17 -5
- data/doc/DaemonTest.html +6 -0
- data/doc/Gemfile.html +128 -0
- data/doc/JobBoss/Boss.html +193 -144
- data/doc/JobBoss/Config.html +8 -2
- data/doc/JobBoss/Job.html +224 -166
- data/doc/JobBoss/Queuer.html +25 -11
- data/doc/JobBoss.html +9 -0
- data/doc/MIT-LICENSE.html +137 -0
- data/doc/MathJobs.html +6 -0
- data/doc/Penguin.html +223 -0
- data/doc/Rakefile.html +6 -0
- data/doc/SleepJobs.html +6 -0
- data/doc/StringJobs.html +7 -1
- data/doc/bin/job_boss.html +3 -1
- data/doc/created.rid +17 -11
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +12 -0
- data/doc/init_rb.html +54 -0
- data/doc/js/darkfish.js +116 -0
- data/doc/js/jquery.js +32 -0
- data/doc/js/quicksearch.js +114 -0
- data/doc/js/thickbox-compressed.js +10 -0
- data/doc/lib/job_boss/boss_rb.html +1 -1
- data/doc/lib/job_boss/config_rb.html +1 -1
- data/doc/lib/job_boss/job_rb.html +1 -1
- data/doc/lib/job_boss/queuer_rb.html +1 -1
- data/doc/lib/job_boss_rb.html +56 -0
- data/doc/lib/migrate_rb.html +1 -1
- data/doc/test/app_root/app/jobs/string_jobs_rb.html +1 -1
- data/doc/test/app_root/app/models/penguin_rb.html +52 -0
- data/doc/test/app_root/config/environment_rb.html +56 -0
- data/doc/test/test_helper_rb.html +3 -1
- data/doc/test/unit/job_test_rb.html +2 -4
- data/job_boss.gemspec +1 -1
- data/lib/job_boss/config.rb +2 -2
- data/lib/job_boss/job.rb +22 -2
- data/lib/job_boss/queuer.rb +10 -2
- data/lib/migrate.rb +6 -0
- data/test/app_root/app/models/penguin.rb +9 -0
- data/test/app_root/config/database.yml +3 -3
- data/test/app_root/config/environment.rb +3 -0
- data/test/test_helper.rb +6 -4
- data/test/unit/job_test.rb +33 -17
- metadata +38 -9
@@ -0,0 +1,52 @@
|
|
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
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
8
|
+
|
9
|
+
<title>File: penguin.rb [RDoc Documentation]</title>
|
10
|
+
|
11
|
+
<link type="text/css" media="screen" href="../../../../rdoc.css" rel="stylesheet" />
|
12
|
+
|
13
|
+
<script src="../../../../js/jquery.js" type="text/javascript"
|
14
|
+
charset="utf-8"></script>
|
15
|
+
<script src="../../../../js/thickbox-compressed.js" type="text/javascript"
|
16
|
+
charset="utf-8"></script>
|
17
|
+
<script src="../../../../js/quicksearch.js" type="text/javascript"
|
18
|
+
charset="utf-8"></script>
|
19
|
+
<script src="../../../../js/darkfish.js" type="text/javascript"
|
20
|
+
charset="utf-8"></script>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body class="file file-popup">
|
24
|
+
<div id="metadata">
|
25
|
+
<dl>
|
26
|
+
<dt class="modified-date">Last Modified</dt>
|
27
|
+
<dd class="modified-date">2010-12-11 14:25:33 -0500</dd>
|
28
|
+
|
29
|
+
|
30
|
+
<dt class="requires">Requires</dt>
|
31
|
+
<dd class="requires">
|
32
|
+
<ul>
|
33
|
+
|
34
|
+
</ul>
|
35
|
+
</dd>
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
</dl>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div id="documentation">
|
43
|
+
|
44
|
+
<div class="description">
|
45
|
+
<h2>Description</h2>
|
46
|
+
|
47
|
+
</div>
|
48
|
+
|
49
|
+
</div>
|
50
|
+
</body>
|
51
|
+
</html>
|
52
|
+
|
@@ -0,0 +1,56 @@
|
|
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
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
8
|
+
|
9
|
+
<title>File: environment.rb [RDoc Documentation]</title>
|
10
|
+
|
11
|
+
<link type="text/css" media="screen" href="../../../rdoc.css" rel="stylesheet" />
|
12
|
+
|
13
|
+
<script src="../../../js/jquery.js" type="text/javascript"
|
14
|
+
charset="utf-8"></script>
|
15
|
+
<script src="../../../js/thickbox-compressed.js" type="text/javascript"
|
16
|
+
charset="utf-8"></script>
|
17
|
+
<script src="../../../js/quicksearch.js" type="text/javascript"
|
18
|
+
charset="utf-8"></script>
|
19
|
+
<script src="../../../js/darkfish.js" type="text/javascript"
|
20
|
+
charset="utf-8"></script>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body class="file file-popup">
|
24
|
+
<div id="metadata">
|
25
|
+
<dl>
|
26
|
+
<dt class="modified-date">Last Modified</dt>
|
27
|
+
<dd class="modified-date">2010-12-11 16:42:13 -0500</dd>
|
28
|
+
|
29
|
+
|
30
|
+
<dt class="requires">Requires</dt>
|
31
|
+
<dd class="requires">
|
32
|
+
<ul>
|
33
|
+
|
34
|
+
<li>rubygems</li>
|
35
|
+
|
36
|
+
<li>active_record</li>
|
37
|
+
|
38
|
+
</ul>
|
39
|
+
</dd>
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
</dl>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="documentation">
|
47
|
+
|
48
|
+
<div class="description">
|
49
|
+
<h2>Description</h2>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
</body>
|
55
|
+
</html>
|
56
|
+
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<div id="metadata">
|
25
25
|
<dl>
|
26
26
|
<dt class="modified-date">Last Modified</dt>
|
27
|
-
<dd class="modified-date">2010-11
|
27
|
+
<dd class="modified-date">2010-12-11 16:41:41 -0500</dd>
|
28
28
|
|
29
29
|
|
30
30
|
<dt class="requires">Requires</dt>
|
@@ -41,6 +41,8 @@
|
|
41
41
|
|
42
42
|
<li>active_support</li>
|
43
43
|
|
44
|
+
<li>active_record</li>
|
45
|
+
|
44
46
|
</ul>
|
45
47
|
</dd>
|
46
48
|
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<div id="metadata">
|
25
25
|
<dl>
|
26
26
|
<dt class="modified-date">Last Modified</dt>
|
27
|
-
<dd class="modified-date">2010-11
|
27
|
+
<dd class="modified-date">2010-12-11 17:03:07 -0500</dd>
|
28
28
|
|
29
29
|
|
30
30
|
<dt class="requires">Requires</dt>
|
@@ -35,9 +35,7 @@
|
|
35
35
|
|
36
36
|
<li>active_record</li>
|
37
37
|
|
38
|
-
<li>job_boss
|
39
|
-
|
40
|
-
<li>job_boss/job</li>
|
38
|
+
<li>job_boss</li>
|
41
39
|
|
42
40
|
</ul>
|
43
41
|
</dd>
|
data/job_boss.gemspec
CHANGED
data/lib/job_boss/config.rb
CHANGED
@@ -3,7 +3,7 @@ module JobBoss
|
|
3
3
|
attr_accessor :application_root, :database_yaml_path, :log_path, :jobs_path, :sleep_interval, :employee_limit, :environment
|
4
4
|
|
5
5
|
def parse_args(argv, options = {})
|
6
|
-
@application_root = options[:working_dir] || Dir.pwd
|
6
|
+
@application_root = File.expand_path(options[:working_dir] || Dir.pwd)
|
7
7
|
@database_yaml_path = 'config/database.yml'
|
8
8
|
@log_path = 'log/job_boss.log'
|
9
9
|
@jobs_path = 'app/jobs'
|
@@ -17,7 +17,7 @@ module JobBoss
|
|
17
17
|
opts.banner = "Usage: job_boss [start|stop|restart|run|zap] [-- <options>]"
|
18
18
|
|
19
19
|
opts.on("-r", "--application-root PATH", "Path for the application root upon which other paths depend (defaults to .)") do |path|
|
20
|
-
@application_root = path
|
20
|
+
@application_root = File.expand_path(path)
|
21
21
|
end
|
22
22
|
|
23
23
|
opts.on("-d", "--database-yaml PATH", "Path for database YAML (defaults to <application-root>/#{@database_yaml_path})") do |path|
|
data/lib/job_boss/job.rb
CHANGED
@@ -105,6 +105,10 @@ module JobBoss
|
|
105
105
|
|
106
106
|
# How long did the job take?
|
107
107
|
def time_taken
|
108
|
+
# If the #time_taken method is being called for but the job doesn't seem to have started/completed
|
109
|
+
# reload to see if it has
|
110
|
+
self.reload if started_at.nil? || completed_at.nil?
|
111
|
+
|
108
112
|
completed_at - started_at if completed_at && started_at
|
109
113
|
end
|
110
114
|
|
@@ -123,6 +127,9 @@ module JobBoss
|
|
123
127
|
end
|
124
128
|
|
125
129
|
class << self
|
130
|
+
# Given a job or an array of jobs
|
131
|
+
# Will cause the process to sleep until all specified jobs have completed
|
132
|
+
# sleep_interval specifies polling period
|
126
133
|
def wait_for_jobs(jobs, sleep_interval = 0.5)
|
127
134
|
jobs = [jobs] if jobs.is_a?(Job)
|
128
135
|
|
@@ -136,6 +143,9 @@ module JobBoss
|
|
136
143
|
true
|
137
144
|
end
|
138
145
|
|
146
|
+
# Given a job or an array of jobs
|
147
|
+
# Returns a hash where the keys are the job method arguments and the values are the
|
148
|
+
# results of the job processing
|
139
149
|
def result_hash(jobs)
|
140
150
|
jobs = [jobs] if jobs.is_a?(Job)
|
141
151
|
|
@@ -148,6 +158,12 @@ module JobBoss
|
|
148
158
|
hash.merge(job.args => job.result)
|
149
159
|
end
|
150
160
|
end
|
161
|
+
|
162
|
+
# Given a time object
|
163
|
+
# Delete all jobs which were completed earlier than that time
|
164
|
+
def delete_jobs_before(time)
|
165
|
+
completed.where('completed_at < ?', time).delete_all
|
166
|
+
end
|
151
167
|
end
|
152
168
|
|
153
169
|
private
|
@@ -186,10 +202,14 @@ private
|
|
186
202
|
controller_object = begin
|
187
203
|
Kernel.const_get("#{controller.classify}Jobs").new
|
188
204
|
rescue NameError
|
189
|
-
|
205
|
+
begin
|
206
|
+
Kernel.const_get("#{controller.classify}")
|
207
|
+
rescue NameError
|
208
|
+
raise ArgumentError, "Invalid controller: #{controller}"
|
209
|
+
end
|
190
210
|
end
|
191
211
|
|
192
|
-
raise ArgumentError, "Invalid path action" unless controller_object.respond_to?(action)
|
212
|
+
raise ArgumentError, "Invalid path action: #{action}" unless controller_object.respond_to?(action)
|
193
213
|
|
194
214
|
controller_object.send(action, *args)
|
195
215
|
end
|
data/lib/job_boss/queuer.rb
CHANGED
@@ -21,13 +21,21 @@ module JobBoss
|
|
21
21
|
raise ArgumentError, "Invalid action"
|
22
22
|
end
|
23
23
|
else
|
24
|
-
# Check to see if there's a
|
24
|
+
# Check to see if there's a class
|
25
25
|
begin
|
26
|
+
# If we find a class that ends in "Jobs", we instanciate it and call an instance method
|
26
27
|
@class = Kernel.const_get("#{method_name.classify}Jobs").new
|
27
28
|
|
28
29
|
@controller = method_name
|
29
30
|
rescue NameError
|
30
|
-
|
31
|
+
begin
|
32
|
+
# If we don't find a class that ends in "Jobs", we're going to call a class method
|
33
|
+
@class = Kernel.const_get("#{method_name.classify}")
|
34
|
+
|
35
|
+
@controller = method_name
|
36
|
+
rescue
|
37
|
+
raise ArgumentError, "Invalid controller"
|
38
|
+
end
|
31
39
|
end
|
32
40
|
|
33
41
|
self
|
data/lib/migrate.rb
CHANGED
@@ -21,6 +21,12 @@ class CreateJobs < ActiveRecord::Migration
|
|
21
21
|
|
22
22
|
add_index :jobs, :path
|
23
23
|
add_index :jobs, :status
|
24
|
+
|
25
|
+
postgres = (ActiveRecord::Base.connection.adapter_name == 'PostgreSQL')
|
26
|
+
|
27
|
+
['started_at', 'cancelled_at', 'completed_at'].each do |field|
|
28
|
+
execute "CREATE INDEX IF NOT EXISTS jobs_#{field}_is_null ON jobs (#{field})" + (postgres ? " WHERE #{field} IS NULL" : '')
|
29
|
+
end
|
24
30
|
end
|
25
31
|
|
26
32
|
def self.down
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# gem install sqlite3-ruby (not necessary on OS X Leopard)
|
3
3
|
development:
|
4
4
|
adapter: sqlite3
|
5
|
-
database:
|
5
|
+
database: db/development.sqlite3
|
6
6
|
pool: 5
|
7
7
|
timeout: 10000
|
8
8
|
|
@@ -11,12 +11,12 @@ development:
|
|
11
11
|
# Do not set this db to the same as development or production.
|
12
12
|
test:
|
13
13
|
adapter: sqlite3
|
14
|
-
database:
|
14
|
+
database: db/test.sqlite3
|
15
15
|
pool: 5
|
16
16
|
timeout: 10000
|
17
17
|
|
18
18
|
production:
|
19
19
|
adapter: sqlite3
|
20
|
-
database:
|
20
|
+
database: db/production.sqlite3
|
21
21
|
pool: 5
|
22
22
|
timeout: 10000
|
data/test/test_helper.rb
CHANGED
@@ -6,6 +6,7 @@ require 'fileutils'
|
|
6
6
|
FileUtils.cd(File.expand_path('../..', __FILE__))
|
7
7
|
|
8
8
|
require 'active_support'
|
9
|
+
require 'active_record'
|
9
10
|
|
10
11
|
class ActiveSupport::TestCase
|
11
12
|
# Add more helper methods to be used by all tests here...
|
@@ -15,7 +16,8 @@ class ActiveSupport::TestCase
|
|
15
16
|
teardown :stop_daemon
|
16
17
|
|
17
18
|
def setup_paths
|
18
|
-
@
|
19
|
+
@job_boss_bin_path = File.expand_path('../../bin/job_boss', __FILE__)
|
20
|
+
@app_root_path = File.expand_path('../app_root', __FILE__)
|
19
21
|
@db_path = File.join(@app_root_path, 'db')
|
20
22
|
@log_path = File.join(@app_root_path, 'log', 'job_boss.log')
|
21
23
|
@db_yaml_path = File.join(@app_root_path, 'config', 'database.yml')
|
@@ -59,7 +61,7 @@ class ActiveSupport::TestCase
|
|
59
61
|
'--' + key.to_s.gsub('_', '-') + " " + value.to_s
|
60
62
|
end
|
61
63
|
|
62
|
-
output =
|
64
|
+
output = `#{@job_boss_bin_path} start -- #{option_string.join(' ')}`
|
63
65
|
|
64
66
|
@daemon_pid = get_pid_from_startup(output)
|
65
67
|
|
@@ -90,7 +92,7 @@ class ActiveSupport::TestCase
|
|
90
92
|
end
|
91
93
|
|
92
94
|
def stop_daemon
|
93
|
-
|
95
|
+
`#{@job_boss_bin_path} stop`
|
94
96
|
|
95
97
|
# Give the daemon a bit of time to stop
|
96
98
|
# sleep(0.5)
|
@@ -100,7 +102,7 @@ class ActiveSupport::TestCase
|
|
100
102
|
def restart_daemon
|
101
103
|
assert_pid_running(@daemon_pid)
|
102
104
|
|
103
|
-
output =
|
105
|
+
output = `#{@job_boss_bin_path} restart`
|
104
106
|
|
105
107
|
# Give the daemon a bit of time to stop
|
106
108
|
# sleep(0.5)
|
data/test/unit/job_test.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'active_record'
|
3
|
-
require 'job_boss
|
4
|
-
|
5
|
-
Dir.
|
3
|
+
require 'job_boss'
|
4
|
+
|
5
|
+
Dir.chdir('test/app_root')
|
6
|
+
|
7
|
+
Dir.glob('app/jobs/*_jobs.rb').each {|lib| require lib }
|
8
|
+
Dir.glob('app/models/*.rb').each {|lib| require lib }
|
6
9
|
|
7
10
|
class DaemonTest < ActiveSupport::TestCase
|
8
11
|
test "job queuing" do
|
@@ -16,22 +19,22 @@ class DaemonTest < ActiveSupport::TestCase
|
|
16
19
|
|
17
20
|
# Test returning results from a number of jobs
|
18
21
|
jobs = (0..10).collect do |i|
|
19
|
-
|
22
|
+
Boss.queue.math.is_prime?(i)
|
20
23
|
end
|
21
24
|
|
22
|
-
|
25
|
+
Job.wait_for_jobs(jobs)
|
23
26
|
|
24
|
-
assert_equal 11,
|
27
|
+
assert_equal 11, Job.completed.count
|
25
28
|
|
26
|
-
|
29
|
+
Job.result_hash(jobs).each do |args, result|
|
27
30
|
assert_equal MathJobs.new.is_prime?(args.first), result
|
28
31
|
end
|
29
32
|
|
30
33
|
|
31
34
|
# Test functions with multiple arguments and a complex return value (an Array in this case)
|
32
|
-
job =
|
33
|
-
|
34
|
-
assert_equal 12,
|
35
|
+
job = Boss.queue.string.concatenate('test', 'of', 'concatenation')
|
36
|
+
Job.wait_for_jobs(job)
|
37
|
+
assert_equal 12, Job.completed.count
|
35
38
|
|
36
39
|
assert_equal ['testofconcatenation', 3], job.result
|
37
40
|
|
@@ -39,15 +42,25 @@ class DaemonTest < ActiveSupport::TestCase
|
|
39
42
|
assert_nil job.error
|
40
43
|
|
41
44
|
|
45
|
+
job = Boss.queue.penguin.snooze(3)
|
46
|
+
time = Benchmark.realtime do
|
47
|
+
Job.wait_for_jobs(job)
|
48
|
+
end
|
49
|
+
|
50
|
+
assert_equal 13, Job.completed.count
|
51
|
+
|
52
|
+
assert job.time_taken > 3
|
53
|
+
assert_equal 'ZzZzZzzz', job.result
|
54
|
+
|
42
55
|
# Test `queue_path` method
|
43
|
-
job =
|
44
|
-
|
45
|
-
assert_equal
|
56
|
+
job = Boss.queue_path('string#concatenate', 'test', 'of', 'concatenation')
|
57
|
+
Job.wait_for_jobs(job)
|
58
|
+
assert_equal 14, Job.completed.count
|
46
59
|
|
47
60
|
assert_equal ['testofconcatenation', 3], job.result
|
48
61
|
|
49
62
|
# Test cancelling of a job
|
50
|
-
job =
|
63
|
+
job = Boss.queue.sleep.sleep_for(10)
|
51
64
|
|
52
65
|
wait_until_job_assigned(job)
|
53
66
|
|
@@ -63,11 +76,14 @@ class DaemonTest < ActiveSupport::TestCase
|
|
63
76
|
assert job.cancelled?
|
64
77
|
assert_not_nil job.cancelled_at
|
65
78
|
|
66
|
-
|
79
|
+
Job.delete_jobs_before(20.seconds.ago)
|
80
|
+
assert Job.completed.count > 0
|
81
|
+
Job.delete_jobs_before(1.second.ago)
|
82
|
+
assert_equal 0, Job.completed.count
|
67
83
|
|
68
84
|
# Test raising of errors
|
69
|
-
job =
|
70
|
-
|
85
|
+
job = Boss.queue.sleep.do_not_never_sleep
|
86
|
+
Job.wait_for_jobs(job)
|
71
87
|
job.reload
|
72
88
|
|
73
89
|
error = job.error
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: job_boss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 11
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
8
|
+
- 5
|
9
|
+
version: 0.5.5
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Brian Underwood
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-11 00:00:00 -05:00
|
19
18
|
default_executable: job_boss
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,7 +38,6 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
41
|
segments:
|
45
42
|
- 0
|
46
43
|
version: "0"
|
@@ -54,7 +51,6 @@ dependencies:
|
|
54
51
|
requirements:
|
55
52
|
- - ">="
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
54
|
segments:
|
59
55
|
- 0
|
60
56
|
version: "0"
|
@@ -79,28 +75,59 @@ files:
|
|
79
75
|
- doc/ActiveSupport/TestCase.html
|
80
76
|
- doc/CreateJobs.html
|
81
77
|
- doc/DaemonTest.html
|
78
|
+
- doc/Gemfile.html
|
82
79
|
- doc/JobBoss.html
|
83
80
|
- doc/JobBoss/Boss.html
|
84
81
|
- doc/JobBoss/Config.html
|
85
82
|
- doc/JobBoss/Job.html
|
86
83
|
- doc/JobBoss/Queuer.html
|
84
|
+
- doc/MIT-LICENSE.html
|
87
85
|
- doc/MathJobs.html
|
86
|
+
- doc/Penguin.html
|
88
87
|
- doc/Rakefile.html
|
89
88
|
- doc/SleepJobs.html
|
90
89
|
- doc/StringJobs.html
|
91
90
|
- doc/bin/job_boss.html
|
92
91
|
- doc/created.rid
|
92
|
+
- doc/images/brick.png
|
93
|
+
- doc/images/brick_link.png
|
94
|
+
- doc/images/bug.png
|
95
|
+
- doc/images/bullet_black.png
|
96
|
+
- doc/images/bullet_toggle_minus.png
|
97
|
+
- doc/images/bullet_toggle_plus.png
|
98
|
+
- doc/images/date.png
|
99
|
+
- doc/images/find.png
|
100
|
+
- doc/images/loadingAnimation.gif
|
101
|
+
- doc/images/macFFBgHack.png
|
102
|
+
- doc/images/package.png
|
103
|
+
- doc/images/page_green.png
|
104
|
+
- doc/images/page_white_text.png
|
105
|
+
- doc/images/page_white_width.png
|
106
|
+
- doc/images/plugin.png
|
107
|
+
- doc/images/ruby.png
|
108
|
+
- doc/images/tag_green.png
|
109
|
+
- doc/images/wrench.png
|
110
|
+
- doc/images/wrench_orange.png
|
111
|
+
- doc/images/zoom.png
|
93
112
|
- doc/index.html
|
113
|
+
- doc/init_rb.html
|
114
|
+
- doc/js/darkfish.js
|
115
|
+
- doc/js/jquery.js
|
116
|
+
- doc/js/quicksearch.js
|
117
|
+
- doc/js/thickbox-compressed.js
|
94
118
|
- doc/lib/job_boss/boss_rb.html
|
95
119
|
- doc/lib/job_boss/capistrano_rb.html
|
96
120
|
- doc/lib/job_boss/config_rb.html
|
97
121
|
- doc/lib/job_boss/job_rb.html
|
98
122
|
- doc/lib/job_boss/queuer_rb.html
|
123
|
+
- doc/lib/job_boss_rb.html
|
99
124
|
- doc/lib/migrate_rb.html
|
100
125
|
- doc/rdoc.css
|
101
126
|
- doc/test/app_root/app/jobs/math_jobs_rb.html
|
102
127
|
- doc/test/app_root/app/jobs/sleep_jobs_rb.html
|
103
128
|
- doc/test/app_root/app/jobs/string_jobs_rb.html
|
129
|
+
- doc/test/app_root/app/models/penguin_rb.html
|
130
|
+
- doc/test/app_root/config/environment_rb.html
|
104
131
|
- doc/test/test_helper_rb.html
|
105
132
|
- doc/test/unit/daemon_test_rb.html
|
106
133
|
- doc/test/unit/job_test_rb.html
|
@@ -116,7 +143,9 @@ files:
|
|
116
143
|
- test/app_root/app/jobs/math_jobs.rb
|
117
144
|
- test/app_root/app/jobs/sleep_jobs.rb
|
118
145
|
- test/app_root/app/jobs/string_jobs.rb
|
146
|
+
- test/app_root/app/models/penguin.rb
|
119
147
|
- test/app_root/config/database.yml
|
148
|
+
- test/app_root/config/environment.rb
|
120
149
|
- test/test_helper.rb
|
121
150
|
- test/unit/daemon_test.rb
|
122
151
|
- test/unit/job_test.rb
|
@@ -136,7 +165,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
165
|
requirements:
|
137
166
|
- - ">="
|
138
167
|
- !ruby/object:Gem::Version
|
139
|
-
hash: 3
|
140
168
|
segments:
|
141
169
|
- 0
|
142
170
|
version: "0"
|
@@ -145,7 +173,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
173
|
requirements:
|
146
174
|
- - ">="
|
147
175
|
- !ruby/object:Gem::Version
|
148
|
-
hash: 23
|
149
176
|
segments:
|
150
177
|
- 1
|
151
178
|
- 3
|
@@ -162,7 +189,9 @@ test_files:
|
|
162
189
|
- test/app_root/app/jobs/math_jobs.rb
|
163
190
|
- test/app_root/app/jobs/sleep_jobs.rb
|
164
191
|
- test/app_root/app/jobs/string_jobs.rb
|
192
|
+
- test/app_root/app/models/penguin.rb
|
165
193
|
- test/app_root/config/database.yml
|
194
|
+
- test/app_root/config/environment.rb
|
166
195
|
- test/test_helper.rb
|
167
196
|
- test/unit/daemon_test.rb
|
168
197
|
- test/unit/job_test.rb
|