good_job 1.2.3 → 1.3.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +127 -0
- data/README.md +324 -160
- data/engine/app/controllers/good_job/active_jobs_controller.rb +8 -0
- data/engine/app/controllers/good_job/base_controller.rb +5 -0
- data/engine/app/controllers/good_job/dashboards_controller.rb +50 -0
- data/engine/app/helpers/good_job/application_helper.rb +4 -0
- data/engine/app/views/assets/_style.css.erb +16 -0
- data/engine/app/views/good_job/active_jobs/show.html.erb +1 -0
- data/engine/app/views/good_job/dashboards/index.html.erb +19 -0
- data/engine/app/views/layouts/good_job/base.html.erb +61 -0
- data/engine/app/views/shared/_chart.erb +51 -0
- data/engine/app/views/shared/_jobs_table.erb +26 -0
- data/engine/app/views/vendor/bootstrap/_bootstrap-native.js.erb +1662 -0
- data/engine/app/views/vendor/bootstrap/_bootstrap.css.erb +10258 -0
- data/engine/app/views/vendor/chartist/_chartist.css.erb +613 -0
- data/engine/app/views/vendor/chartist/_chartist.js.erb +4516 -0
- data/engine/config/routes.rb +4 -0
- data/engine/lib/good_job/engine.rb +5 -0
- data/lib/active_job/queue_adapters/good_job_adapter.rb +3 -2
- data/lib/generators/good_job/install_generator.rb +8 -0
- data/lib/good_job.rb +59 -27
- data/lib/good_job/adapter.rb +41 -0
- data/lib/good_job/cli.rb +70 -14
- data/lib/good_job/configuration.rb +61 -2
- data/lib/good_job/job.rb +126 -36
- data/lib/good_job/lockable.rb +126 -13
- data/lib/good_job/log_subscriber.rb +80 -16
- data/lib/good_job/multi_scheduler.rb +6 -0
- data/lib/good_job/notifier.rb +57 -31
- data/lib/good_job/performer.rb +38 -0
- data/lib/good_job/poller.rb +94 -0
- data/lib/good_job/railtie.rb +1 -0
- data/lib/good_job/scheduler.rb +54 -81
- data/lib/good_job/version.rb +2 -1
- metadata +154 -11
- data/lib/good_job/pg_locks.rb +0 -21
data/lib/good_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: good_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Sheldon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.
|
19
|
+
version: 5.2.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 5.
|
26
|
+
version: 5.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 5.
|
33
|
+
version: 5.2.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 5.
|
40
|
+
version: 5.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: concurrent-ruby
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 5.
|
75
|
+
version: 5.2.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 5.
|
82
|
+
version: 5.2.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: thor
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.14.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: zeitwerk
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: appraisal
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: capybara
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: database_cleaner
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +164,20 @@ dependencies:
|
|
136
164
|
- - ">="
|
137
165
|
- !ruby/object:Gem::Version
|
138
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: erb_lint
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
139
181
|
- !ruby/object:Gem::Dependency
|
140
182
|
name: foreman
|
141
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,6 +220,48 @@ dependencies:
|
|
178
220
|
- - ">="
|
179
221
|
- !ruby/object:Gem::Version
|
180
222
|
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: kramdown
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: kramdown-parser-gfm
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: mdl
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
181
265
|
- !ruby/object:Gem::Dependency
|
182
266
|
name: pry-rails
|
183
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +290,20 @@ dependencies:
|
|
206
290
|
- - ">="
|
207
291
|
- !ruby/object:Gem::Version
|
208
292
|
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: rails
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
209
307
|
- !ruby/object:Gem::Dependency
|
210
308
|
name: rbtrace
|
211
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -290,6 +388,20 @@ dependencies:
|
|
290
388
|
- - ">="
|
291
389
|
- !ruby/object:Gem::Version
|
292
390
|
version: '0'
|
391
|
+
- !ruby/object:Gem::Dependency
|
392
|
+
name: selenium-webdriver
|
393
|
+
requirement: !ruby/object:Gem::Requirement
|
394
|
+
requirements:
|
395
|
+
- - ">="
|
396
|
+
- !ruby/object:Gem::Version
|
397
|
+
version: '0'
|
398
|
+
type: :development
|
399
|
+
prerelease: false
|
400
|
+
version_requirements: !ruby/object:Gem::Requirement
|
401
|
+
requirements:
|
402
|
+
- - ">="
|
403
|
+
- !ruby/object:Gem::Version
|
404
|
+
version: '0'
|
293
405
|
- !ruby/object:Gem::Dependency
|
294
406
|
name: sigdump
|
295
407
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,6 +430,20 @@ dependencies:
|
|
318
430
|
- - ">="
|
319
431
|
- !ruby/object:Gem::Version
|
320
432
|
version: '0'
|
433
|
+
- !ruby/object:Gem::Dependency
|
434
|
+
name: yard-activesupport-concern
|
435
|
+
requirement: !ruby/object:Gem::Requirement
|
436
|
+
requirements:
|
437
|
+
- - ">="
|
438
|
+
- !ruby/object:Gem::Version
|
439
|
+
version: '0'
|
440
|
+
type: :development
|
441
|
+
prerelease: false
|
442
|
+
version_requirements: !ruby/object:Gem::Requirement
|
443
|
+
requirements:
|
444
|
+
- - ">="
|
445
|
+
- !ruby/object:Gem::Version
|
446
|
+
version: '0'
|
321
447
|
description: A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails
|
322
448
|
email:
|
323
449
|
- bensheldon@gmail.com
|
@@ -332,6 +458,22 @@ files:
|
|
332
458
|
- CHANGELOG.md
|
333
459
|
- LICENSE.txt
|
334
460
|
- README.md
|
461
|
+
- engine/app/controllers/good_job/active_jobs_controller.rb
|
462
|
+
- engine/app/controllers/good_job/base_controller.rb
|
463
|
+
- engine/app/controllers/good_job/dashboards_controller.rb
|
464
|
+
- engine/app/helpers/good_job/application_helper.rb
|
465
|
+
- engine/app/views/assets/_style.css.erb
|
466
|
+
- engine/app/views/good_job/active_jobs/show.html.erb
|
467
|
+
- engine/app/views/good_job/dashboards/index.html.erb
|
468
|
+
- engine/app/views/layouts/good_job/base.html.erb
|
469
|
+
- engine/app/views/shared/_chart.erb
|
470
|
+
- engine/app/views/shared/_jobs_table.erb
|
471
|
+
- engine/app/views/vendor/bootstrap/_bootstrap-native.js.erb
|
472
|
+
- engine/app/views/vendor/bootstrap/_bootstrap.css.erb
|
473
|
+
- engine/app/views/vendor/chartist/_chartist.css.erb
|
474
|
+
- engine/app/views/vendor/chartist/_chartist.js.erb
|
475
|
+
- engine/config/routes.rb
|
476
|
+
- engine/lib/good_job/engine.rb
|
335
477
|
- exe/good_job
|
336
478
|
- lib/active_job/queue_adapters/good_job_adapter.rb
|
337
479
|
- lib/generators/good_job/install_generator.rb
|
@@ -347,7 +489,7 @@ files:
|
|
347
489
|
- lib/good_job/multi_scheduler.rb
|
348
490
|
- lib/good_job/notifier.rb
|
349
491
|
- lib/good_job/performer.rb
|
350
|
-
- lib/good_job/
|
492
|
+
- lib/good_job/poller.rb
|
351
493
|
- lib/good_job/railtie.rb
|
352
494
|
- lib/good_job/scheduler.rb
|
353
495
|
- lib/good_job/version.rb
|
@@ -371,18 +513,19 @@ rdoc_options:
|
|
371
513
|
- "--quiet"
|
372
514
|
require_paths:
|
373
515
|
- lib
|
516
|
+
- engine/lib
|
374
517
|
required_ruby_version: !ruby/object:Gem::Requirement
|
375
518
|
requirements:
|
376
519
|
- - ">="
|
377
520
|
- !ruby/object:Gem::Version
|
378
|
-
version: 2.
|
521
|
+
version: 2.5.0
|
379
522
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
380
523
|
requirements:
|
381
524
|
- - ">="
|
382
525
|
- !ruby/object:Gem::Version
|
383
526
|
version: '0'
|
384
527
|
requirements: []
|
385
|
-
rubygems_version: 3.
|
528
|
+
rubygems_version: 3.1.4
|
386
529
|
signing_key:
|
387
530
|
specification_version: 4
|
388
531
|
summary: A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails
|
data/lib/good_job/pg_locks.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module GoodJob
|
2
|
-
class PgLocks < ActiveRecord::Base
|
3
|
-
self.table_name = 'pg_locks'.freeze
|
4
|
-
|
5
|
-
# https://www.postgresql.org/docs/9.6/view-pg-locks.html
|
6
|
-
# Advisory locks can be acquired on keys consisting of either a single bigint value or two integer values.
|
7
|
-
# A bigint key is displayed with its high-order half in the classid column, its low-order half in the objid column, and objsubid equal to 1.
|
8
|
-
# The original bigint value can be reassembled with the expression (classid::bigint << 32) | objid::bigint.
|
9
|
-
# Integer keys are displayed with the first key in the classid column, the second key in the objid column, and objsubid equal to 2.
|
10
|
-
# The actual meaning of the keys is up to the user. Advisory locks are local to each database, so the database column is meaningful for an advisory lock.
|
11
|
-
def self.advisory_lock_details
|
12
|
-
connection.select <<~SQL
|
13
|
-
SELECT *
|
14
|
-
FROM pg_locks
|
15
|
-
WHERE
|
16
|
-
locktype = 'advisory' AND
|
17
|
-
objsubid = 1
|
18
|
-
SQL
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|