good_job 2.15.2 → 2.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +30 -15
  4. data/{engine/app → app}/assets/good_job/modules/application.js +0 -0
  5. data/{engine/app → app}/assets/good_job/modules/charts.js +0 -0
  6. data/{engine/app → app}/assets/good_job/modules/checkbox_toggle.js +0 -0
  7. data/{engine/app → app}/assets/good_job/modules/document_ready.js +0 -0
  8. data/{engine/app → app}/assets/good_job/modules/live_poll.js +0 -0
  9. data/{engine/app → app}/assets/good_job/modules/toasts.js +0 -0
  10. data/{engine/app → app}/assets/good_job/scripts.js +0 -0
  11. data/{engine/app → app}/assets/good_job/style.css +0 -0
  12. data/{engine/app → app}/assets/good_job/vendor/bootstrap/bootstrap.bundle.min.js +0 -0
  13. data/{engine/app → app}/assets/good_job/vendor/bootstrap/bootstrap.min.css +0 -0
  14. data/{engine/app → app}/assets/good_job/vendor/chartjs/chart.min.js +0 -0
  15. data/{engine/app → app}/assets/good_job/vendor/es_module_shims.js +0 -0
  16. data/{engine/app → app}/assets/good_job/vendor/rails_ujs.js +0 -0
  17. data/{engine/app → app}/charts/good_job/scheduled_by_queue_chart.rb +0 -0
  18. data/{engine/app → app}/controllers/good_job/application_controller.rb +0 -0
  19. data/{engine/app → app}/controllers/good_job/assets_controller.rb +0 -0
  20. data/{engine/app → app}/controllers/good_job/cron_entries_controller.rb +0 -0
  21. data/{engine/app → app}/controllers/good_job/jobs_controller.rb +0 -0
  22. data/{engine/app → app}/controllers/good_job/processes_controller.rb +0 -0
  23. data/{engine/app → app}/filters/good_job/base_filter.rb +0 -0
  24. data/{engine/app → app}/filters/good_job/jobs_filter.rb +0 -0
  25. data/{engine/app → app}/helpers/good_job/application_helper.rb +0 -0
  26. data/{lib → app/models}/good_job/active_job_job.rb +2 -2
  27. data/{lib → app/models}/good_job/execution.rb +0 -0
  28. data/{lib → app/models}/good_job/process.rb +0 -0
  29. data/{engine/app → app}/views/good_job/cron_entries/index.html.erb +0 -0
  30. data/{engine/app → app}/views/good_job/cron_entries/show.html.erb +0 -0
  31. data/{engine/app → app}/views/good_job/jobs/_executions.erb +0 -0
  32. data/{engine/app → app}/views/good_job/jobs/_table.erb +0 -0
  33. data/{engine/app → app}/views/good_job/jobs/index.html.erb +0 -0
  34. data/{engine/app → app}/views/good_job/jobs/show.html.erb +0 -0
  35. data/{engine/app → app}/views/good_job/processes/index.html.erb +0 -0
  36. data/{engine/app → app}/views/good_job/shared/_alert.erb +0 -0
  37. data/{engine/app → app}/views/good_job/shared/_chart.erb +0 -0
  38. data/{engine/app → app}/views/good_job/shared/_filter.erb +0 -0
  39. data/{engine/app → app}/views/good_job/shared/_footer.erb +0 -0
  40. data/{engine/app → app}/views/good_job/shared/_navbar.erb +0 -0
  41. data/{engine/app → app}/views/good_job/shared/icons/_arrow_clockwise.html.erb +0 -0
  42. data/{engine/app → app}/views/good_job/shared/icons/_check.html.erb +0 -0
  43. data/{engine/app → app}/views/good_job/shared/icons/_clock.html.erb +0 -0
  44. data/{engine/app → app}/views/good_job/shared/icons/_dash_circle.html.erb +0 -0
  45. data/{engine/app → app}/views/good_job/shared/icons/_exclamation.html.erb +0 -0
  46. data/{engine/app → app}/views/good_job/shared/icons/_play.html.erb +0 -0
  47. data/{engine/app → app}/views/good_job/shared/icons/_skip_forward.html.erb +0 -0
  48. data/{engine/app → app}/views/good_job/shared/icons/_stop.html.erb +0 -0
  49. data/{engine/app → app}/views/good_job/shared/icons/_trash.html.erb +0 -0
  50. data/{engine/app → app}/views/layouts/good_job/application.html.erb +0 -0
  51. data/{engine/config → config}/locales/en.yml +0 -0
  52. data/{engine/config → config}/locales/es.yml +0 -0
  53. data/{engine/config → config}/locales/nl.yml +0 -0
  54. data/{engine/config → config}/locales/ru.yml +0 -0
  55. data/{engine/config → config}/routes.rb +0 -0
  56. data/lib/good_job/adapter.rb +33 -4
  57. data/lib/good_job/configuration.rb +4 -0
  58. data/lib/good_job/{railtie.rb → engine.rb} +3 -1
  59. data/lib/good_job/version.rb +1 -1
  60. data/lib/good_job.rb +17 -5
  61. metadata +56 -58
  62. data/engine/lib/good_job/engine.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb6d6387b67811dec6d23e26267a4fe356c42ddc3feb14cb046f57c61c2b5802
4
- data.tar.gz: 7ce4090bfeb05c67913f0d6f99fb2517a4370b669fdbfb648a17bfdca3d92efc
3
+ metadata.gz: 92c29f2bed6e36f449e880b5433c089351c63d1365cdc094b774122202407fb3
4
+ data.tar.gz: 4125a6cfb9e3c0d3de88bd8cdfb64acb450f8c6072fc2aa6a0907f9b51083add
5
5
  SHA512:
6
- metadata.gz: b2efda0438bff75e52ab9e390ee3bf33bdbb64b13a4937ed3e58170100b0afd0a0ead5a3b1b9d902548c4356eba1b9f21296bd94f4f84ecd7884ef2b28fa0a09
7
- data.tar.gz: d66ebb51d7c83b0b8c77d1300707a5c82df9bdafd1bc91231093ce331d59ff788c9c59539e10f3996664b572dec3b1dab019d01d2855bf497e3b4efd86929616
6
+ metadata.gz: cd6b4fbce879de227852b9399bbb65739933b50732dfc5be5a3563162c55375d1d366d4796bf163c4d12683a7f03668ef7a80d73e229343debe622c7e7ccd2b1
7
+ data.tar.gz: 5f4fac41e04a0844b93cc482e24b910e599ccabf411ac6841e7519cb6d573a6d7bb82070f6a35ffc40a1937256f910e9e6995cc5a9090e779c9b2eac33a8d901
data/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## [v2.17.0](https://github.com/bensheldon/good_job/tree/v2.17.0) (2022-06-23)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.16.1...v2.17.0)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Remove nonexistant `engine/lib` from $LOAD\_PATH [\#629](https://github.com/bensheldon/good_job/pull/629) ([bensheldon](https://github.com/bensheldon))
10
+ - Mention in README that dashboard can't see completed jobs unless they are preserved [\#627](https://github.com/bensheldon/good_job/pull/627) ([jrochkind](https://github.com/jrochkind))
11
+ - Clarify README on default in development [\#623](https://github.com/bensheldon/good_job/pull/623) ([jrochkind](https://github.com/jrochkind))
12
+ - Convert GoodJob into a single mountable engine \(instead of a plugin plus optional engine\) [\#554](https://github.com/bensheldon/good_job/pull/554) ([bensheldon](https://github.com/bensheldon))
13
+
14
+ ## [v2.16.1](https://github.com/bensheldon/good_job/tree/v2.16.1) (2022-06-18)
15
+
16
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.16.0...v2.16.1)
17
+
18
+ **Fixed bugs:**
19
+
20
+ - Fix `:inline` mode with future behavior to run unscheduled jobs immediately [\#620](https://github.com/bensheldon/good_job/pull/620) ([bensheldon](https://github.com/bensheldon))
21
+
22
+ **Merged pull requests:**
23
+
24
+ - Version check `Zeitwerk::Loader.new(warn_on_extra_files: false)` flag [\#619](https://github.com/bensheldon/good_job/pull/619) ([bensheldon](https://github.com/bensheldon))
25
+
26
+ ## [v2.16.0](https://github.com/bensheldon/good_job/tree/v2.16.0) (2022-06-17)
27
+
28
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.15.2...v2.16.0)
29
+
30
+ **Implemented enhancements:**
31
+
32
+ - Allow inline executor to respect scheduled jobs; deprecate old behavior. Add `GoodJob.perform_inline` [\#615](https://github.com/bensheldon/good_job/pull/615) ([bensheldon](https://github.com/bensheldon))
33
+
34
+ **Closed issues:**
35
+
36
+ - Upgrading zeitwerk to 2.6.0 causes a warning related to good\_job [\#616](https://github.com/bensheldon/good_job/issues/616)
37
+
3
38
  ## [v2.15.2](https://github.com/bensheldon/good_job/tree/v2.15.2) (2022-06-17)
4
39
 
5
40
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.15.1...v2.15.2)
data/README.md CHANGED
@@ -59,6 +59,7 @@ For more of the story of GoodJob, read the [introductory blog post](https://isla
59
59
  - [Execute jobs async / in-process](#execute-jobs-async--in-process)
60
60
  - [Migrate to GoodJob from a different ActiveJob backend](#migrate-to-goodjob-from-a-different-activejob-backend)
61
61
  - [Monitor and preserve worked jobs](#monitor-and-preserve-worked-jobs)
62
+ - [Write tests](#write-tests)
62
63
  - [PgBouncer compatibility](#pgbouncer-compatibility)
63
64
  - [CLI HTTP health check probes](#cli-http-health-check-probes)
64
65
  - [Contribute](#contribute)
@@ -115,7 +116,7 @@ For more of the story of GoodJob, read the [introductory blog post](https://isla
115
116
  YourJob.set(queue: :some_queue, wait: 5.minutes, priority: 10).perform_later
116
117
  ```
117
118
 
118
- 1. In development, GoodJob executes jobs immediately. In production, GoodJob provides different options:
119
+ 1. In development, GoodJob executes jobs immediately in a separate thread (async mode). In production, GoodJob provides different options:
119
120
 
120
121
  - By default, GoodJob separates job enqueuing from job execution so that jobs can be scaled independently of the web server. Use the GoodJob command-line tool to execute jobs:
121
122
 
@@ -276,6 +277,7 @@ Available configuration options are:
276
277
  - `cleanup_preserved_jobs_before_seconds_ago` (integer) number of seconds to preserve jobs when using the `$ good_job cleanup_preserved_jobs` CLI command or calling `GoodJob.cleanup_preserved_jobs`. Defaults to `86400` (1 day). Can also be set with the environment variable `GOOD_JOB_CLEANUP_PRESERVED_JOBS_BEFORE_SECONDS_AGO`. _This configuration is only used when {GoodJob.preserve_job_records} is `true`._
277
278
  - `cleanup_interval_jobs` (integer) Number of jobs a Scheduler will execute before cleaning up preserved jobs. Defaults to `nil`. Can also be set with the environment variable `GOOD_JOB_CLEANUP_INTERVAL_JOBS`.
278
279
  - `cleanup_interval_seconds` (integer) Number of seconds a Scheduler will wait before cleaning up preserved jobs. Defaults to `nil`. Can also be set with the environment variable `GOOD_JOB_CLEANUP_INTERVAL_SECONDS`.
280
+ - `inline_execution_respects_schedule` (boolean) Opt-in to future behavior of inline execution respecting scheduled jobs. Defaults to `false`.
279
281
  - `logger` ([Rails Logger](https://api.rubyonrails.org/classes/ActiveSupport/Logger.html)) lets you set a custom logger for GoodJob. It should be an instance of a Rails `Logger` (Default: `Rails.logger`).
280
282
  - `preserve_job_records` (boolean) keeps job records in your database even after jobs are completed. (Default: `false`)
281
283
  - `retry_on_unhandled_error` (boolean) causes jobs to be re-queued and retried if they raise an instance of `StandardError`. Be advised this may lead to jobs being repeated infinitely ([see below for more on retries](#retries)). Instances of `Exception`, like SIGINT, will *always* be retried, regardless of this attribute’s value. (Default: `true`)
@@ -330,19 +332,6 @@ _🚧 GoodJob's dashboard is a work in progress. Please contribute ideas and cod
330
332
 
331
333
  GoodJob includes a Dashboard as a mountable `Rails::Engine`.
332
334
 
333
- 1. Explicitly require the Engine code at the top of your `config/application.rb` file, immediately after Rails is required and before Bundler requires the Rails' groups. This is necessary because the mountable engine is an optional feature of GoodJob.
334
-
335
- ```ruby
336
- # config/application.rb
337
- require_relative 'boot'
338
-
339
- require 'rails/all'
340
- require 'good_job/engine' # <= Add this line
341
- # ...
342
- ```
343
-
344
- Note: If you find the dashboard fails to reload due to a routing error and uninitialized constant `GoodJob::ExecutionsController`, this is likely because you are not requiring the engine early enough.
345
-
346
335
  1. Mount the engine in your `config/routes.rb` file. The following will mount it at `http://example.com/good_job`.
347
336
 
348
337
  ```ruby
@@ -351,7 +340,7 @@ GoodJob includes a Dashboard as a mountable `Rails::Engine`.
351
340
  mount GoodJob::Engine => 'good_job'
352
341
  ```
353
342
 
354
- Because jobs can potentially contain sensitive information, you should authorize access. For example, using Devise's `authenticate` helper, that might look like:
343
+ 1. Configure authentication. Because jobs can potentially contain sensitive information, you should authorize access. For example, using Devise's `authenticate` helper, that might look like:
355
344
 
356
345
  ```ruby
357
346
  # config/routes.rb
@@ -371,6 +360,15 @@ GoodJob includes a Dashboard as a mountable `Rails::Engine`.
371
360
  end
372
361
  ```
373
362
 
363
+ 1. If you want to see finished (successful) and discarded (failed) jobs on the dashboard, you will have to configure job records to be preserved:
364
+
365
+ ```ruby
366
+ # eg in config/initializers/good_job.rb
367
+ GoodJob.preserve_job_records = true
368
+ ```
369
+
370
+ See more at [Monitor and preserve worked jobs](#monitor-and-preserve-worked-jobs)
371
+
374
372
  #### API-only Rails applications
375
373
 
376
374
  API-only Rails applications may not have all of the required Rack middleware for the GoodJob Dashboard to function. To re-add the middlware:
@@ -878,6 +876,23 @@ It is also necessary to destroy these preserved jobs from the database after a c
878
876
  bundle exec good_job cleanup_preserved_jobs --before-seconds-ago=86400
879
877
  ```
880
878
 
879
+ ### Write tests
880
+
881
+ By default, GoodJob uses its inline adapter in the test environment; the inline adapter is designed for the test environment. When enquing a job with GoodJob's inline adapter, the job will be executed immediately on the current thread; unhandled exceptions will be raised.
882
+
883
+ In GoodJob 2.0, the inline adapter will execute future scheduled jobs immediately. In the next major release, GoodJob 3.0, the inline adapter will not execute future scheduled jobs and instead enqueue them in the database.
884
+
885
+ To opt into this behavior immediately set: `config.good_job.inline_execution_respects_schedule = true`
886
+
887
+ To perform jobs inline at any time, use `GoodJob.perform_inline`. For example, using time helpers within an integration test:
888
+
889
+ ```ruby
890
+ MyJob.set(wait: 10.minutes).perform_later
891
+ travel_to(15.minutes.from_now) { GoodJob.perform_inline }
892
+ ```
893
+
894
+ _Note: Rails `travel`/`travel_to` time helpers do not have millisecond precision, so you must leave at least 1 second between the schedule and time traveling for the job to be executed. This [behavior may change in Rails 7.1](https://github.com/rails/rails/pull/44088)._
895
+
881
896
  ### PgBouncer compatibility
882
897
 
883
898
  GoodJob is not compatible with PgBouncer in _transaction_ mode, but is compatible with PgBouncer's _connection_ mode. GoodJob uses connection-based advisory locks and LISTEN/NOTIFY, both of which require full database connections.
File without changes
File without changes
File without changes
File without changes
@@ -16,7 +16,7 @@ module GoodJob
16
16
  DiscardJobError = Class.new(StandardError)
17
17
 
18
18
  class << self
19
- delegate :table_name, to: Execution
19
+ delegate :table_name, to: GoodJob::Execution
20
20
 
21
21
  def table_name=(_value)
22
22
  raise NotImplementedError, 'Assign GoodJob::Execution.table_name directly'
@@ -26,7 +26,7 @@ module GoodJob
26
26
  self.primary_key = 'active_job_id'
27
27
  self.advisory_lockable_column = 'active_job_id'
28
28
 
29
- has_many :executions, -> { order(created_at: :asc) }, class_name: 'GoodJob::Execution', foreign_key: 'active_job_id', inverse_of: :job
29
+ has_many :executions, -> { order(created_at: :asc) }, class_name: 'GoodJob::Execution', foreign_key: 'active_job_id', inverse_of: :job # rubocop:disable Rails/HasManyOrHasOneDependent
30
30
 
31
31
  # Only the most-recent unretried execution represents a "Job"
32
32
  default_scope { where(retried_good_job_id: nil) }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -62,19 +62,48 @@ module GoodJob
62
62
  # @param timestamp [Integer, nil] the epoch time to perform the job
63
63
  # @return [GoodJob::Execution]
64
64
  def enqueue_at(active_job, timestamp)
65
+ scheduled_at = timestamp ? Time.zone.at(timestamp) : nil
66
+
67
+ if execute_inline?
68
+ future_scheduled = scheduled_at && scheduled_at > Time.current
69
+ will_execute_inline = !future_scheduled || (future_scheduled && !@configuration.inline_execution_respects_schedule?)
70
+ end
71
+
65
72
  execution = GoodJob::Execution.enqueue(
66
73
  active_job,
67
- scheduled_at: timestamp ? Time.zone.at(timestamp) : nil,
68
- create_with_advisory_lock: execute_inline?
74
+ scheduled_at: scheduled_at,
75
+ create_with_advisory_lock: will_execute_inline
69
76
  )
70
77
 
71
- if execute_inline?
78
+ if will_execute_inline
79
+ if future_scheduled && !@configuration.inline_execution_respects_schedule?
80
+ ActiveSupport::Deprecation.warn(<<~DEPRECATION)
81
+ In the next major release, GoodJob will not *inline* execute
82
+ future-scheduled jobs.
83
+
84
+ To opt into this behavior immediately set:
85
+ `config.good_job.inline_execution_respects_schedule = true`
86
+
87
+ To perform jobs inline at any time, use `GoodJob.perform_inline`.
88
+
89
+ For example, using time helpers within an integration test:
90
+
91
+ ```
92
+ MyJob.set(wait: 10.minutes).perform_later
93
+ travel_to(15.minutes.from_now) { GoodJob.perform_inline }
94
+ ```
95
+
96
+ Note: Rails `travel`/`travel_to` time helpers do not have millisecond
97
+ precision, so you must leave at least 1 second between the schedule
98
+ and time traveling for the job to be executed.
99
+ DEPRECATION
100
+ end
101
+
72
102
  begin
73
103
  result = execution.perform
74
104
  ensure
75
105
  execution.advisory_unlock
76
106
  end
77
-
78
107
  raise result.unhandled_error if result.unhandled_error
79
108
  else
80
109
  job_state = { queue_name: execution.queue_name }
@@ -119,6 +119,10 @@ module GoodJob
119
119
  end
120
120
  end
121
121
 
122
+ def inline_execution_respects_schedule?
123
+ !!rails_config[:inline_execution_respects_schedule]
124
+ end
125
+
122
126
  # The maximum number of future-scheduled jobs to store in memory.
123
127
  # Storing future-scheduled jobs in memory reduces execution latency
124
128
  # at the cost of increased memory usage. 10,000 stored jobs = ~20MB.
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  module GoodJob
3
3
  # Ruby on Rails integration.
4
- class Railtie < ::Rails::Railtie
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace GoodJob
6
+
5
7
  config.good_job = ActiveSupport::OrderedOptions.new
6
8
  config.good_job.cron = {}
7
9
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module GoodJob
3
3
  # GoodJob gem version.
4
- VERSION = '2.15.2'
4
+ VERSION = '2.17.0'
5
5
  end
data/lib/good_job.rb CHANGED
@@ -1,20 +1,18 @@
1
1
  # frozen_string_literal: true
2
- require "rails"
3
2
  require "active_job"
4
3
  require "active_job/queue_adapters"
5
4
 
6
5
  require "zeitwerk"
7
- Zeitwerk::Loader.for_gem.tap do |loader|
6
+ zeitwerk_options = Gem::Version.new(Zeitwerk::VERSION) >= Gem::Version.new("2.6.0") ? { warn_on_extra_files: false } : {}
7
+ Zeitwerk::Loader.for_gem(**zeitwerk_options).tap do |loader|
8
8
  loader.inflector.inflect({
9
9
  "cli" => "CLI",
10
10
  })
11
11
  loader.ignore("#{__dir__}/generators")
12
- loader.ignore("#{__dir__}/active_job")
13
- loader.push_dir("#{__dir__}/active_job/queue_adapters", namespace: ActiveJob::QueueAdapters)
14
12
  loader.setup
15
13
  end
16
14
 
17
- require "good_job/railtie"
15
+ require "good_job/engine"
18
16
 
19
17
  # GoodJob is a multithreaded, Postgres-based, ActiveJob backend for Ruby on Rails.
20
18
  #
@@ -153,6 +151,20 @@ module GoodJob
153
151
  end
154
152
  end
155
153
 
154
+ # Perform all queued jobs in the current thread.
155
+ # This is primarily intended for usage in a test environment.
156
+ # Unhandled job errors will be raised.
157
+ # @param queue_string [String] Queues to execute jobs from
158
+ # @return [void]
159
+ def self.perform_inline(queue_string = "*")
160
+ job_performer = JobPerformer.new(queue_string)
161
+ loop do
162
+ result = job_performer.next
163
+ break unless result
164
+ raise result.unhandled_error if result.unhandled_error
165
+ end
166
+ end
167
+
156
168
  def self._executables
157
169
  [].concat(
158
170
  CronManager.instances,
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: 2.15.2
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sheldon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-17 00:00:00.000000000 Z
11
+ date: 2022-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -360,56 +360,58 @@ files:
360
360
  - CHANGELOG.md
361
361
  - LICENSE.txt
362
362
  - README.md
363
- - engine/app/assets/good_job/modules/application.js
364
- - engine/app/assets/good_job/modules/charts.js
365
- - engine/app/assets/good_job/modules/checkbox_toggle.js
366
- - engine/app/assets/good_job/modules/document_ready.js
367
- - engine/app/assets/good_job/modules/live_poll.js
368
- - engine/app/assets/good_job/modules/toasts.js
369
- - engine/app/assets/good_job/scripts.js
370
- - engine/app/assets/good_job/style.css
371
- - engine/app/assets/good_job/vendor/bootstrap/bootstrap.bundle.min.js
372
- - engine/app/assets/good_job/vendor/bootstrap/bootstrap.min.css
373
- - engine/app/assets/good_job/vendor/chartjs/chart.min.js
374
- - engine/app/assets/good_job/vendor/es_module_shims.js
375
- - engine/app/assets/good_job/vendor/rails_ujs.js
376
- - engine/app/charts/good_job/scheduled_by_queue_chart.rb
377
- - engine/app/controllers/good_job/application_controller.rb
378
- - engine/app/controllers/good_job/assets_controller.rb
379
- - engine/app/controllers/good_job/cron_entries_controller.rb
380
- - engine/app/controllers/good_job/jobs_controller.rb
381
- - engine/app/controllers/good_job/processes_controller.rb
382
- - engine/app/filters/good_job/base_filter.rb
383
- - engine/app/filters/good_job/jobs_filter.rb
384
- - engine/app/helpers/good_job/application_helper.rb
385
- - engine/app/views/good_job/cron_entries/index.html.erb
386
- - engine/app/views/good_job/cron_entries/show.html.erb
387
- - engine/app/views/good_job/jobs/_executions.erb
388
- - engine/app/views/good_job/jobs/_table.erb
389
- - engine/app/views/good_job/jobs/index.html.erb
390
- - engine/app/views/good_job/jobs/show.html.erb
391
- - engine/app/views/good_job/processes/index.html.erb
392
- - engine/app/views/good_job/shared/_alert.erb
393
- - engine/app/views/good_job/shared/_chart.erb
394
- - engine/app/views/good_job/shared/_filter.erb
395
- - engine/app/views/good_job/shared/_footer.erb
396
- - engine/app/views/good_job/shared/_navbar.erb
397
- - engine/app/views/good_job/shared/icons/_arrow_clockwise.html.erb
398
- - engine/app/views/good_job/shared/icons/_check.html.erb
399
- - engine/app/views/good_job/shared/icons/_clock.html.erb
400
- - engine/app/views/good_job/shared/icons/_dash_circle.html.erb
401
- - engine/app/views/good_job/shared/icons/_exclamation.html.erb
402
- - engine/app/views/good_job/shared/icons/_play.html.erb
403
- - engine/app/views/good_job/shared/icons/_skip_forward.html.erb
404
- - engine/app/views/good_job/shared/icons/_stop.html.erb
405
- - engine/app/views/good_job/shared/icons/_trash.html.erb
406
- - engine/app/views/layouts/good_job/application.html.erb
407
- - engine/config/locales/en.yml
408
- - engine/config/locales/es.yml
409
- - engine/config/locales/nl.yml
410
- - engine/config/locales/ru.yml
411
- - engine/config/routes.rb
412
- - engine/lib/good_job/engine.rb
363
+ - app/assets/good_job/modules/application.js
364
+ - app/assets/good_job/modules/charts.js
365
+ - app/assets/good_job/modules/checkbox_toggle.js
366
+ - app/assets/good_job/modules/document_ready.js
367
+ - app/assets/good_job/modules/live_poll.js
368
+ - app/assets/good_job/modules/toasts.js
369
+ - app/assets/good_job/scripts.js
370
+ - app/assets/good_job/style.css
371
+ - app/assets/good_job/vendor/bootstrap/bootstrap.bundle.min.js
372
+ - app/assets/good_job/vendor/bootstrap/bootstrap.min.css
373
+ - app/assets/good_job/vendor/chartjs/chart.min.js
374
+ - app/assets/good_job/vendor/es_module_shims.js
375
+ - app/assets/good_job/vendor/rails_ujs.js
376
+ - app/charts/good_job/scheduled_by_queue_chart.rb
377
+ - app/controllers/good_job/application_controller.rb
378
+ - app/controllers/good_job/assets_controller.rb
379
+ - app/controllers/good_job/cron_entries_controller.rb
380
+ - app/controllers/good_job/jobs_controller.rb
381
+ - app/controllers/good_job/processes_controller.rb
382
+ - app/filters/good_job/base_filter.rb
383
+ - app/filters/good_job/jobs_filter.rb
384
+ - app/helpers/good_job/application_helper.rb
385
+ - app/models/good_job/active_job_job.rb
386
+ - app/models/good_job/execution.rb
387
+ - app/models/good_job/process.rb
388
+ - app/views/good_job/cron_entries/index.html.erb
389
+ - app/views/good_job/cron_entries/show.html.erb
390
+ - app/views/good_job/jobs/_executions.erb
391
+ - app/views/good_job/jobs/_table.erb
392
+ - app/views/good_job/jobs/index.html.erb
393
+ - app/views/good_job/jobs/show.html.erb
394
+ - app/views/good_job/processes/index.html.erb
395
+ - app/views/good_job/shared/_alert.erb
396
+ - app/views/good_job/shared/_chart.erb
397
+ - app/views/good_job/shared/_filter.erb
398
+ - app/views/good_job/shared/_footer.erb
399
+ - app/views/good_job/shared/_navbar.erb
400
+ - app/views/good_job/shared/icons/_arrow_clockwise.html.erb
401
+ - app/views/good_job/shared/icons/_check.html.erb
402
+ - app/views/good_job/shared/icons/_clock.html.erb
403
+ - app/views/good_job/shared/icons/_dash_circle.html.erb
404
+ - app/views/good_job/shared/icons/_exclamation.html.erb
405
+ - app/views/good_job/shared/icons/_play.html.erb
406
+ - app/views/good_job/shared/icons/_skip_forward.html.erb
407
+ - app/views/good_job/shared/icons/_stop.html.erb
408
+ - app/views/good_job/shared/icons/_trash.html.erb
409
+ - app/views/layouts/good_job/application.html.erb
410
+ - config/locales/en.yml
411
+ - config/locales/es.yml
412
+ - config/locales/nl.yml
413
+ - config/locales/ru.yml
414
+ - config/routes.rb
413
415
  - exe/good_job
414
416
  - lib/active_job/queue_adapters/good_job_adapter.rb
415
417
  - lib/generators/good_job/install_generator.rb
@@ -423,7 +425,6 @@ files:
423
425
  - lib/good_job.rb
424
426
  - lib/good_job/active_job_extensions.rb
425
427
  - lib/good_job/active_job_extensions/concurrency.rb
426
- - lib/good_job/active_job_job.rb
427
428
  - lib/good_job/adapter.rb
428
429
  - lib/good_job/assignable_connection.rb
429
430
  - lib/good_job/base_record.rb
@@ -435,7 +436,7 @@ files:
435
436
  - lib/good_job/current_thread.rb
436
437
  - lib/good_job/daemon.rb
437
438
  - lib/good_job/dependencies.rb
438
- - lib/good_job/execution.rb
439
+ - lib/good_job/engine.rb
439
440
  - lib/good_job/execution_result.rb
440
441
  - lib/good_job/filterable.rb
441
442
  - lib/good_job/job.rb
@@ -447,8 +448,6 @@ files:
447
448
  - lib/good_job/notifier/process_registration.rb
448
449
  - lib/good_job/poller.rb
449
450
  - lib/good_job/probe_server.rb
450
- - lib/good_job/process.rb
451
- - lib/good_job/railtie.rb
452
451
  - lib/good_job/scheduler.rb
453
452
  - lib/good_job/version.rb
454
453
  homepage: https://github.com/bensheldon/good_job
@@ -472,7 +471,6 @@ rdoc_options:
472
471
  - "--quiet"
473
472
  require_paths:
474
473
  - lib
475
- - engine/lib
476
474
  required_ruby_version: !ruby/object:Gem::Requirement
477
475
  requirements:
478
476
  - - ">="
@@ -484,7 +482,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
484
482
  - !ruby/object:Gem::Version
485
483
  version: '0'
486
484
  requirements: []
487
- rubygems_version: 3.2.33
485
+ rubygems_version: 3.3.16
488
486
  signing_key:
489
487
  specification_version: 4
490
488
  summary: A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- module GoodJob
3
- class Engine < ::Rails::Engine
4
- isolate_namespace GoodJob
5
- end
6
- end