good_job 2.4.2 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -0
  3. data/README.md +12 -4
  4. data/engine/app/assets/scripts.js +1 -0
  5. data/engine/app/assets/style.css +5 -0
  6. data/engine/app/assets/vendor/chartjs/chart.min.js +13 -0
  7. data/engine/app/assets/vendor/rails_ujs.js +747 -0
  8. data/engine/app/charts/good_job/scheduled_by_queue_chart.rb +69 -0
  9. data/engine/app/controllers/good_job/assets_controller.rb +8 -4
  10. data/engine/app/controllers/good_job/cron_entries_controller.rb +19 -0
  11. data/engine/app/controllers/good_job/jobs_controller.rb +36 -0
  12. data/engine/app/filters/good_job/base_filter.rb +18 -56
  13. data/engine/app/filters/good_job/executions_filter.rb +9 -8
  14. data/engine/app/filters/good_job/jobs_filter.rb +12 -9
  15. data/engine/app/views/good_job/cron_entries/index.html.erb +51 -0
  16. data/engine/app/views/good_job/cron_entries/show.html.erb +4 -0
  17. data/engine/app/views/good_job/{shared/_executions_table.erb → executions/_table.erb} +1 -1
  18. data/engine/app/views/good_job/executions/index.html.erb +2 -2
  19. data/engine/app/views/good_job/{shared/_jobs_table.erb → jobs/_table.erb} +18 -6
  20. data/engine/app/views/good_job/jobs/index.html.erb +15 -2
  21. data/engine/app/views/good_job/jobs/show.html.erb +2 -2
  22. data/engine/app/views/good_job/shared/_chart.erb +19 -46
  23. data/engine/app/views/good_job/shared/_filter.erb +27 -13
  24. data/engine/app/views/good_job/shared/icons/_arrow_clockwise.html.erb +5 -0
  25. data/engine/app/views/good_job/shared/icons/_play.html.erb +4 -0
  26. data/engine/app/views/good_job/shared/icons/_skip_forward.html.erb +4 -0
  27. data/engine/app/views/good_job/shared/icons/_stop.html.erb +4 -0
  28. data/engine/app/views/layouts/good_job/base.html.erb +6 -4
  29. data/engine/config/routes.rb +17 -4
  30. data/lib/generators/good_job/templates/install/migrations/create_good_jobs.rb.erb +2 -0
  31. data/lib/generators/good_job/templates/update/migrations/02_add_cron_at_to_good_jobs.rb.erb +14 -0
  32. data/lib/generators/good_job/templates/update/migrations/03_add_cron_key_cron_at_index_to_good_jobs.rb.erb +20 -0
  33. data/lib/good_job/active_job_job.rb +228 -0
  34. data/lib/good_job/configuration.rb +1 -1
  35. data/lib/good_job/cron_entry.rb +78 -5
  36. data/lib/good_job/cron_manager.rb +4 -6
  37. data/lib/good_job/current_thread.rb +38 -5
  38. data/lib/good_job/execution.rb +53 -39
  39. data/lib/good_job/filterable.rb +42 -0
  40. data/lib/good_job/notifier.rb +17 -7
  41. data/lib/good_job/version.rb +1 -1
  42. metadata +31 -21
  43. data/engine/app/assets/vendor/chartist/chartist.css +0 -613
  44. data/engine/app/assets/vendor/chartist/chartist.js +0 -4516
  45. data/engine/app/controllers/good_job/cron_schedules_controller.rb +0 -9
  46. data/engine/app/models/good_job/active_job_job.rb +0 -127
  47. data/engine/app/views/good_job/cron_schedules/index.html.erb +0 -72
@@ -1,613 +0,0 @@
1
- .ct-label {
2
- fill: rgba(0, 0, 0, 0.4);
3
- color: rgba(0, 0, 0, 0.4);
4
- font-size: 0.75rem;
5
- line-height: 1; }
6
-
7
- .ct-chart-line .ct-label,
8
- .ct-chart-bar .ct-label {
9
- display: block;
10
- display: -webkit-box;
11
- display: -moz-box;
12
- display: -ms-flexbox;
13
- display: -webkit-flex;
14
- display: flex; }
15
-
16
- .ct-chart-pie .ct-label,
17
- .ct-chart-donut .ct-label {
18
- dominant-baseline: central; }
19
-
20
- .ct-label.ct-horizontal.ct-start {
21
- -webkit-box-align: flex-end;
22
- -webkit-align-items: flex-end;
23
- -ms-flex-align: flex-end;
24
- align-items: flex-end;
25
- -webkit-box-pack: flex-start;
26
- -webkit-justify-content: flex-start;
27
- -ms-flex-pack: flex-start;
28
- justify-content: flex-start;
29
- text-align: left;
30
- text-anchor: start; }
31
-
32
- .ct-label.ct-horizontal.ct-end {
33
- -webkit-box-align: flex-start;
34
- -webkit-align-items: flex-start;
35
- -ms-flex-align: flex-start;
36
- align-items: flex-start;
37
- -webkit-box-pack: flex-start;
38
- -webkit-justify-content: flex-start;
39
- -ms-flex-pack: flex-start;
40
- justify-content: flex-start;
41
- text-align: left;
42
- text-anchor: start; }
43
-
44
- .ct-label.ct-vertical.ct-start {
45
- -webkit-box-align: flex-end;
46
- -webkit-align-items: flex-end;
47
- -ms-flex-align: flex-end;
48
- align-items: flex-end;
49
- -webkit-box-pack: flex-end;
50
- -webkit-justify-content: flex-end;
51
- -ms-flex-pack: flex-end;
52
- justify-content: flex-end;
53
- text-align: right;
54
- text-anchor: end; }
55
-
56
- .ct-label.ct-vertical.ct-end {
57
- -webkit-box-align: flex-end;
58
- -webkit-align-items: flex-end;
59
- -ms-flex-align: flex-end;
60
- align-items: flex-end;
61
- -webkit-box-pack: flex-start;
62
- -webkit-justify-content: flex-start;
63
- -ms-flex-pack: flex-start;
64
- justify-content: flex-start;
65
- text-align: left;
66
- text-anchor: start; }
67
-
68
- .ct-chart-bar .ct-label.ct-horizontal.ct-start {
69
- -webkit-box-align: flex-end;
70
- -webkit-align-items: flex-end;
71
- -ms-flex-align: flex-end;
72
- align-items: flex-end;
73
- -webkit-box-pack: center;
74
- -webkit-justify-content: center;
75
- -ms-flex-pack: center;
76
- justify-content: center;
77
- text-align: center;
78
- text-anchor: start; }
79
-
80
- .ct-chart-bar .ct-label.ct-horizontal.ct-end {
81
- -webkit-box-align: flex-start;
82
- -webkit-align-items: flex-start;
83
- -ms-flex-align: flex-start;
84
- align-items: flex-start;
85
- -webkit-box-pack: center;
86
- -webkit-justify-content: center;
87
- -ms-flex-pack: center;
88
- justify-content: center;
89
- text-align: center;
90
- text-anchor: start; }
91
-
92
- .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start {
93
- -webkit-box-align: flex-end;
94
- -webkit-align-items: flex-end;
95
- -ms-flex-align: flex-end;
96
- align-items: flex-end;
97
- -webkit-box-pack: flex-start;
98
- -webkit-justify-content: flex-start;
99
- -ms-flex-pack: flex-start;
100
- justify-content: flex-start;
101
- text-align: left;
102
- text-anchor: start; }
103
-
104
- .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end {
105
- -webkit-box-align: flex-start;
106
- -webkit-align-items: flex-start;
107
- -ms-flex-align: flex-start;
108
- align-items: flex-start;
109
- -webkit-box-pack: flex-start;
110
- -webkit-justify-content: flex-start;
111
- -ms-flex-pack: flex-start;
112
- justify-content: flex-start;
113
- text-align: left;
114
- text-anchor: start; }
115
-
116
- .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start {
117
- -webkit-box-align: center;
118
- -webkit-align-items: center;
119
- -ms-flex-align: center;
120
- align-items: center;
121
- -webkit-box-pack: flex-end;
122
- -webkit-justify-content: flex-end;
123
- -ms-flex-pack: flex-end;
124
- justify-content: flex-end;
125
- text-align: right;
126
- text-anchor: end; }
127
-
128
- .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end {
129
- -webkit-box-align: center;
130
- -webkit-align-items: center;
131
- -ms-flex-align: center;
132
- align-items: center;
133
- -webkit-box-pack: flex-start;
134
- -webkit-justify-content: flex-start;
135
- -ms-flex-pack: flex-start;
136
- justify-content: flex-start;
137
- text-align: left;
138
- text-anchor: end; }
139
-
140
- .ct-grid {
141
- stroke: rgba(0, 0, 0, 0.2);
142
- stroke-width: 1px;
143
- stroke-dasharray: 2px; }
144
-
145
- .ct-grid-background {
146
- fill: none; }
147
-
148
- .ct-point {
149
- stroke-width: 10px;
150
- stroke-linecap: round; }
151
-
152
- .ct-line {
153
- fill: none;
154
- stroke-width: 4px; }
155
-
156
- .ct-area {
157
- stroke: none;
158
- fill-opacity: 0.1; }
159
-
160
- .ct-bar {
161
- fill: none;
162
- stroke-width: 10px; }
163
-
164
- .ct-slice-donut {
165
- fill: none;
166
- stroke-width: 60px; }
167
-
168
- .ct-series-a .ct-point, .ct-series-a .ct-line, .ct-series-a .ct-bar, .ct-series-a .ct-slice-donut {
169
- stroke: #d70206; }
170
-
171
- .ct-series-a .ct-slice-pie, .ct-series-a .ct-slice-donut-solid, .ct-series-a .ct-area {
172
- fill: #d70206; }
173
-
174
- .ct-series-b .ct-point, .ct-series-b .ct-line, .ct-series-b .ct-bar, .ct-series-b .ct-slice-donut {
175
- stroke: #f05b4f; }
176
-
177
- .ct-series-b .ct-slice-pie, .ct-series-b .ct-slice-donut-solid, .ct-series-b .ct-area {
178
- fill: #f05b4f; }
179
-
180
- .ct-series-c .ct-point, .ct-series-c .ct-line, .ct-series-c .ct-bar, .ct-series-c .ct-slice-donut {
181
- stroke: #f4c63d; }
182
-
183
- .ct-series-c .ct-slice-pie, .ct-series-c .ct-slice-donut-solid, .ct-series-c .ct-area {
184
- fill: #f4c63d; }
185
-
186
- .ct-series-d .ct-point, .ct-series-d .ct-line, .ct-series-d .ct-bar, .ct-series-d .ct-slice-donut {
187
- stroke: #d17905; }
188
-
189
- .ct-series-d .ct-slice-pie, .ct-series-d .ct-slice-donut-solid, .ct-series-d .ct-area {
190
- fill: #d17905; }
191
-
192
- .ct-series-e .ct-point, .ct-series-e .ct-line, .ct-series-e .ct-bar, .ct-series-e .ct-slice-donut {
193
- stroke: #453d3f; }
194
-
195
- .ct-series-e .ct-slice-pie, .ct-series-e .ct-slice-donut-solid, .ct-series-e .ct-area {
196
- fill: #453d3f; }
197
-
198
- .ct-series-f .ct-point, .ct-series-f .ct-line, .ct-series-f .ct-bar, .ct-series-f .ct-slice-donut {
199
- stroke: #59922b; }
200
-
201
- .ct-series-f .ct-slice-pie, .ct-series-f .ct-slice-donut-solid, .ct-series-f .ct-area {
202
- fill: #59922b; }
203
-
204
- .ct-series-g .ct-point, .ct-series-g .ct-line, .ct-series-g .ct-bar, .ct-series-g .ct-slice-donut {
205
- stroke: #0544d3; }
206
-
207
- .ct-series-g .ct-slice-pie, .ct-series-g .ct-slice-donut-solid, .ct-series-g .ct-area {
208
- fill: #0544d3; }
209
-
210
- .ct-series-h .ct-point, .ct-series-h .ct-line, .ct-series-h .ct-bar, .ct-series-h .ct-slice-donut {
211
- stroke: #6b0392; }
212
-
213
- .ct-series-h .ct-slice-pie, .ct-series-h .ct-slice-donut-solid, .ct-series-h .ct-area {
214
- fill: #6b0392; }
215
-
216
- .ct-series-i .ct-point, .ct-series-i .ct-line, .ct-series-i .ct-bar, .ct-series-i .ct-slice-donut {
217
- stroke: #f05b4f; }
218
-
219
- .ct-series-i .ct-slice-pie, .ct-series-i .ct-slice-donut-solid, .ct-series-i .ct-area {
220
- fill: #f05b4f; }
221
-
222
- .ct-series-j .ct-point, .ct-series-j .ct-line, .ct-series-j .ct-bar, .ct-series-j .ct-slice-donut {
223
- stroke: #dda458; }
224
-
225
- .ct-series-j .ct-slice-pie, .ct-series-j .ct-slice-donut-solid, .ct-series-j .ct-area {
226
- fill: #dda458; }
227
-
228
- .ct-series-k .ct-point, .ct-series-k .ct-line, .ct-series-k .ct-bar, .ct-series-k .ct-slice-donut {
229
- stroke: #eacf7d; }
230
-
231
- .ct-series-k .ct-slice-pie, .ct-series-k .ct-slice-donut-solid, .ct-series-k .ct-area {
232
- fill: #eacf7d; }
233
-
234
- .ct-series-l .ct-point, .ct-series-l .ct-line, .ct-series-l .ct-bar, .ct-series-l .ct-slice-donut {
235
- stroke: #86797d; }
236
-
237
- .ct-series-l .ct-slice-pie, .ct-series-l .ct-slice-donut-solid, .ct-series-l .ct-area {
238
- fill: #86797d; }
239
-
240
- .ct-series-m .ct-point, .ct-series-m .ct-line, .ct-series-m .ct-bar, .ct-series-m .ct-slice-donut {
241
- stroke: #b2c326; }
242
-
243
- .ct-series-m .ct-slice-pie, .ct-series-m .ct-slice-donut-solid, .ct-series-m .ct-area {
244
- fill: #b2c326; }
245
-
246
- .ct-series-n .ct-point, .ct-series-n .ct-line, .ct-series-n .ct-bar, .ct-series-n .ct-slice-donut {
247
- stroke: #6188e2; }
248
-
249
- .ct-series-n .ct-slice-pie, .ct-series-n .ct-slice-donut-solid, .ct-series-n .ct-area {
250
- fill: #6188e2; }
251
-
252
- .ct-series-o .ct-point, .ct-series-o .ct-line, .ct-series-o .ct-bar, .ct-series-o .ct-slice-donut {
253
- stroke: #a748ca; }
254
-
255
- .ct-series-o .ct-slice-pie, .ct-series-o .ct-slice-donut-solid, .ct-series-o .ct-area {
256
- fill: #a748ca; }
257
-
258
- .ct-square {
259
- display: block;
260
- position: relative;
261
- width: 100%; }
262
- .ct-square:before {
263
- display: block;
264
- float: left;
265
- content: "";
266
- width: 0;
267
- height: 0;
268
- padding-bottom: 100%; }
269
- .ct-square:after {
270
- content: "";
271
- display: table;
272
- clear: both; }
273
- .ct-square > svg {
274
- display: block;
275
- position: absolute;
276
- top: 0;
277
- left: 0; }
278
-
279
- .ct-minor-second {
280
- display: block;
281
- position: relative;
282
- width: 100%; }
283
- .ct-minor-second:before {
284
- display: block;
285
- float: left;
286
- content: "";
287
- width: 0;
288
- height: 0;
289
- padding-bottom: 93.75%; }
290
- .ct-minor-second:after {
291
- content: "";
292
- display: table;
293
- clear: both; }
294
- .ct-minor-second > svg {
295
- display: block;
296
- position: absolute;
297
- top: 0;
298
- left: 0; }
299
-
300
- .ct-major-second {
301
- display: block;
302
- position: relative;
303
- width: 100%; }
304
- .ct-major-second:before {
305
- display: block;
306
- float: left;
307
- content: "";
308
- width: 0;
309
- height: 0;
310
- padding-bottom: 88.8888888889%; }
311
- .ct-major-second:after {
312
- content: "";
313
- display: table;
314
- clear: both; }
315
- .ct-major-second > svg {
316
- display: block;
317
- position: absolute;
318
- top: 0;
319
- left: 0; }
320
-
321
- .ct-minor-third {
322
- display: block;
323
- position: relative;
324
- width: 100%; }
325
- .ct-minor-third:before {
326
- display: block;
327
- float: left;
328
- content: "";
329
- width: 0;
330
- height: 0;
331
- padding-bottom: 83.3333333333%; }
332
- .ct-minor-third:after {
333
- content: "";
334
- display: table;
335
- clear: both; }
336
- .ct-minor-third > svg {
337
- display: block;
338
- position: absolute;
339
- top: 0;
340
- left: 0; }
341
-
342
- .ct-major-third {
343
- display: block;
344
- position: relative;
345
- width: 100%; }
346
- .ct-major-third:before {
347
- display: block;
348
- float: left;
349
- content: "";
350
- width: 0;
351
- height: 0;
352
- padding-bottom: 80%; }
353
- .ct-major-third:after {
354
- content: "";
355
- display: table;
356
- clear: both; }
357
- .ct-major-third > svg {
358
- display: block;
359
- position: absolute;
360
- top: 0;
361
- left: 0; }
362
-
363
- .ct-perfect-fourth {
364
- display: block;
365
- position: relative;
366
- width: 100%; }
367
- .ct-perfect-fourth:before {
368
- display: block;
369
- float: left;
370
- content: "";
371
- width: 0;
372
- height: 0;
373
- padding-bottom: 75%; }
374
- .ct-perfect-fourth:after {
375
- content: "";
376
- display: table;
377
- clear: both; }
378
- .ct-perfect-fourth > svg {
379
- display: block;
380
- position: absolute;
381
- top: 0;
382
- left: 0; }
383
-
384
- .ct-perfect-fifth {
385
- display: block;
386
- position: relative;
387
- width: 100%; }
388
- .ct-perfect-fifth:before {
389
- display: block;
390
- float: left;
391
- content: "";
392
- width: 0;
393
- height: 0;
394
- padding-bottom: 66.6666666667%; }
395
- .ct-perfect-fifth:after {
396
- content: "";
397
- display: table;
398
- clear: both; }
399
- .ct-perfect-fifth > svg {
400
- display: block;
401
- position: absolute;
402
- top: 0;
403
- left: 0; }
404
-
405
- .ct-minor-sixth {
406
- display: block;
407
- position: relative;
408
- width: 100%; }
409
- .ct-minor-sixth:before {
410
- display: block;
411
- float: left;
412
- content: "";
413
- width: 0;
414
- height: 0;
415
- padding-bottom: 62.5%; }
416
- .ct-minor-sixth:after {
417
- content: "";
418
- display: table;
419
- clear: both; }
420
- .ct-minor-sixth > svg {
421
- display: block;
422
- position: absolute;
423
- top: 0;
424
- left: 0; }
425
-
426
- .ct-golden-section {
427
- display: block;
428
- position: relative;
429
- width: 100%; }
430
- .ct-golden-section:before {
431
- display: block;
432
- float: left;
433
- content: "";
434
- width: 0;
435
- height: 0;
436
- padding-bottom: 61.804697157%; }
437
- .ct-golden-section:after {
438
- content: "";
439
- display: table;
440
- clear: both; }
441
- .ct-golden-section > svg {
442
- display: block;
443
- position: absolute;
444
- top: 0;
445
- left: 0; }
446
-
447
- .ct-major-sixth {
448
- display: block;
449
- position: relative;
450
- width: 100%; }
451
- .ct-major-sixth:before {
452
- display: block;
453
- float: left;
454
- content: "";
455
- width: 0;
456
- height: 0;
457
- padding-bottom: 60%; }
458
- .ct-major-sixth:after {
459
- content: "";
460
- display: table;
461
- clear: both; }
462
- .ct-major-sixth > svg {
463
- display: block;
464
- position: absolute;
465
- top: 0;
466
- left: 0; }
467
-
468
- .ct-minor-seventh {
469
- display: block;
470
- position: relative;
471
- width: 100%; }
472
- .ct-minor-seventh:before {
473
- display: block;
474
- float: left;
475
- content: "";
476
- width: 0;
477
- height: 0;
478
- padding-bottom: 56.25%; }
479
- .ct-minor-seventh:after {
480
- content: "";
481
- display: table;
482
- clear: both; }
483
- .ct-minor-seventh > svg {
484
- display: block;
485
- position: absolute;
486
- top: 0;
487
- left: 0; }
488
-
489
- .ct-major-seventh {
490
- display: block;
491
- position: relative;
492
- width: 100%; }
493
- .ct-major-seventh:before {
494
- display: block;
495
- float: left;
496
- content: "";
497
- width: 0;
498
- height: 0;
499
- padding-bottom: 53.3333333333%; }
500
- .ct-major-seventh:after {
501
- content: "";
502
- display: table;
503
- clear: both; }
504
- .ct-major-seventh > svg {
505
- display: block;
506
- position: absolute;
507
- top: 0;
508
- left: 0; }
509
-
510
- .ct-octave {
511
- display: block;
512
- position: relative;
513
- width: 100%; }
514
- .ct-octave:before {
515
- display: block;
516
- float: left;
517
- content: "";
518
- width: 0;
519
- height: 0;
520
- padding-bottom: 50%; }
521
- .ct-octave:after {
522
- content: "";
523
- display: table;
524
- clear: both; }
525
- .ct-octave > svg {
526
- display: block;
527
- position: absolute;
528
- top: 0;
529
- left: 0; }
530
-
531
- .ct-major-tenth {
532
- display: block;
533
- position: relative;
534
- width: 100%; }
535
- .ct-major-tenth:before {
536
- display: block;
537
- float: left;
538
- content: "";
539
- width: 0;
540
- height: 0;
541
- padding-bottom: 40%; }
542
- .ct-major-tenth:after {
543
- content: "";
544
- display: table;
545
- clear: both; }
546
- .ct-major-tenth > svg {
547
- display: block;
548
- position: absolute;
549
- top: 0;
550
- left: 0; }
551
-
552
- .ct-major-eleventh {
553
- display: block;
554
- position: relative;
555
- width: 100%; }
556
- .ct-major-eleventh:before {
557
- display: block;
558
- float: left;
559
- content: "";
560
- width: 0;
561
- height: 0;
562
- padding-bottom: 37.5%; }
563
- .ct-major-eleventh:after {
564
- content: "";
565
- display: table;
566
- clear: both; }
567
- .ct-major-eleventh > svg {
568
- display: block;
569
- position: absolute;
570
- top: 0;
571
- left: 0; }
572
-
573
- .ct-major-twelfth {
574
- display: block;
575
- position: relative;
576
- width: 100%; }
577
- .ct-major-twelfth:before {
578
- display: block;
579
- float: left;
580
- content: "";
581
- width: 0;
582
- height: 0;
583
- padding-bottom: 33.3333333333%; }
584
- .ct-major-twelfth:after {
585
- content: "";
586
- display: table;
587
- clear: both; }
588
- .ct-major-twelfth > svg {
589
- display: block;
590
- position: absolute;
591
- top: 0;
592
- left: 0; }
593
-
594
- .ct-double-octave {
595
- display: block;
596
- position: relative;
597
- width: 100%; }
598
- .ct-double-octave:before {
599
- display: block;
600
- float: left;
601
- content: "";
602
- width: 0;
603
- height: 0;
604
- padding-bottom: 25%; }
605
- .ct-double-octave:after {
606
- content: "";
607
- display: table;
608
- clear: both; }
609
- .ct-double-octave > svg {
610
- display: block;
611
- position: absolute;
612
- top: 0;
613
- left: 0; }