good_job 4.0.0 → 4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a4006c920a731f763e36a964e7eb161a292e8a4b34bffa4b60b95b75145c28c
4
- data.tar.gz: f54b107db6ac1e2304a4ee9e2d34fa65032dc2b1ab0425e0be5ea42d39e5590b
3
+ metadata.gz: e2bd0a03d12095efe56c49c36fce5dbef909efbb4a984203c49b5ad2e0ba2fc5
4
+ data.tar.gz: 5bc6fc1c127bcffe8388b8f0994c3a2c82b31952387c6be67a35fc280bf1c4cd
5
5
  SHA512:
6
- metadata.gz: 4474aaa0540dc5ff1bba65e8807a6fa69a9901f2e68051c57cf954e30270e9e6d7eaf52a3ce8ec7de6f48b16fc60fa05e796f595f14dfda41a76cbeb5b042543
7
- data.tar.gz: cf8103c84fceffe91e4f7b0f5083c3989d2312a17ce96b1db01d7726a99b651c7d850f83fe23075c5a01628a825ef71d335d0eb42e91a478a62dd7772ee95e54
6
+ metadata.gz: 0a4c1d788d8c8ea031b4b4654b65b7fe170a0f24d1ffb2550a150de100c8c73f66a4b7d3b19bce99b7f752230c50c5b59829bd906cc3036759553b5615b1b451
7
+ data.tar.gz: 25b4458b92cbeca4db9f6486ee73e41f415b12ab585b35d7724f24e88f99e86b038be2e73f67b4e4bc6c60ff3d01df7903529ab9c859d3df9259db0a113460bc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## [v4.0.2](https://github.com/bensheldon/good_job/tree/v4.0.2) (2024-07-08)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.1...v4.0.2)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - Fix a rails 6.1 deprecation warning for the duration attribute [\#1408](https://github.com/bensheldon/good_job/pull/1408) ([Earlopain](https://github.com/Earlopain))
10
+ - Actually remove deprecated configuration for `cleanup_interval_seconds`, `cleanup_interval_jobs`; remove deprecated `Lockable` [\#1406](https://github.com/bensheldon/good_job/pull/1406) ([bensheldon](https://github.com/bensheldon))
11
+
12
+ **Closed issues:**
13
+
14
+ - PG::UndefinedColumn: ERROR: column good\_job\_processes.lock\_type does not exist [\#1405](https://github.com/bensheldon/good_job/issues/1405)
15
+ - undefined method `duration=' for an instance of GoodJob::Execution [\#1404](https://github.com/bensheldon/good_job/issues/1404)
16
+ - v3 deprecations are still present [\#1399](https://github.com/bensheldon/good_job/issues/1399)
17
+
18
+ **Merged pull requests:**
19
+
20
+ - Fix Batch integration test to not exhaust database connection thread pool [\#1409](https://github.com/bensheldon/good_job/pull/1409) ([bensheldon](https://github.com/bensheldon))
21
+ - Discrete cleanup [\#1401](https://github.com/bensheldon/good_job/pull/1401) ([Earlopain](https://github.com/Earlopain))
22
+
23
+ ## [v4.0.1](https://github.com/bensheldon/good_job/tree/v4.0.1) (2024-07-08)
24
+
25
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.0...v4.0.1)
26
+
27
+ **Fixed bugs:**
28
+
29
+ - Actually change `smaller_number_is_higher_priority` for v4 [\#1402](https://github.com/bensheldon/good_job/pull/1402) ([Earlopain](https://github.com/Earlopain))
30
+
31
+ **Merged pull requests:**
32
+
33
+ - Bump prism/rbi dev dependency [\#1403](https://github.com/bensheldon/good_job/pull/1403) ([Earlopain](https://github.com/Earlopain))
34
+ - Use index action for the performance controller [\#1398](https://github.com/bensheldon/good_job/pull/1398) ([Earlopain](https://github.com/Earlopain))
35
+
3
36
  ## [v4.0.0](https://github.com/bensheldon/good_job/tree/v4.0.0) (2024-07-07)
4
37
 
5
38
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.99.0...v4.0.0)
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GoodJob
4
- class PerformancesController < ApplicationController
5
- def show
4
+ class PerformanceController < ApplicationController
5
+ def index
6
6
  @performances = GoodJob::DiscreteExecution
7
7
  .where.not(job_class: nil)
8
8
  .group(:job_class)
@@ -25,6 +25,8 @@ module GoodJob
25
25
  self.advisory_lockable_column = 'active_job_id'
26
26
  self.implicit_order_column = 'created_at'
27
27
 
28
+ self.ignored_columns += ["is_discrete"]
29
+
28
30
  define_model_callbacks :perform
29
31
  define_model_callbacks :perform_unlocked, only: :after
30
32
 
@@ -216,14 +218,6 @@ module GoodJob
216
218
  def coalesce_scheduled_at_created_at
217
219
  arel_table.coalesce(arel_table['scheduled_at'], arel_table['created_at'])
218
220
  end
219
-
220
- def discrete_support?
221
- true
222
- end
223
- end
224
-
225
- def discrete?
226
- is_discrete?
227
221
  end
228
222
 
229
223
  # Build an ActiveJob instance and deserialize the arguments, using `#active_job_data`.
@@ -545,17 +539,6 @@ module GoodJob
545
539
  false
546
540
  end
547
541
 
548
- def make_discrete
549
- self.is_discrete = true
550
- self.id = active_job_id
551
- self.job_class = serialized_params['job_class']
552
- self.executions_count ||= 0
553
-
554
- current_time = Time.current
555
- self.created_at ||= current_time
556
- self.scheduled_at ||= current_time
557
- end
558
-
559
542
  # Return formatted serialized_params for display in the dashboard
560
543
  # @return [Hash]
561
544
  def display_serialized_params
@@ -14,6 +14,9 @@ module GoodJob # :nodoc:
14
14
 
15
15
  alias_attribute :performed_at, :created_at
16
16
 
17
+ # TODO: Remove when support for Rails 6.1 is dropped
18
+ attribute :duration, :interval
19
+
17
20
  def number
18
21
  serialized_params.fetch('executions', 0) + 1
19
22
  end
@@ -46,8 +46,6 @@ module GoodJob
46
46
  # Errored but will not be retried
47
47
  scope :discarded, -> { finished.where.not(error: nil) }
48
48
 
49
- scope :unfinished_undiscrete, -> { where(finished_at: nil, retried_good_job_id: nil, is_discrete: [nil, false]) }
50
-
51
49
  # TODO: it would be nice to enforce these values at the model
52
50
  # validates :active_job_id, presence: true
53
51
  # validates :scheduled_at, presence: true
@@ -40,8 +40,8 @@
40
40
  <% end %>
41
41
  </li>
42
42
  <li class="nav-item">
43
- <%= link_to performance_path, class: ["nav-link", ("active" if controller_name == 'performances')] do %>
44
- <%= t(".performances") %>
43
+ <%= link_to performance_index_path, class: ["nav-link", ("active" if controller_name == 'performance')] do %>
44
+ <%= t(".performance") %>
45
45
  <% end %>
46
46
  </li>
47
47
  </ul>
@@ -194,8 +194,8 @@ de:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Durchschnittliche Dauer
200
200
  executions: Hinrichtungen
201
201
  job_class: Berufsklasse
@@ -231,7 +231,7 @@ de:
231
231
  jobs: Jobs
232
232
  live_poll: Live Poll
233
233
  name: "GoodJob 👍"
234
- performances: Leistung
234
+ performance: Leistung
235
235
  processes: Prozesse
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ en:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Average duration
200
200
  executions: Executions
201
201
  job_class: Job class
@@ -231,7 +231,7 @@ en:
231
231
  jobs: Jobs
232
232
  live_poll: Live Poll
233
233
  name: "GoodJob 👍"
234
- performances: Performance
234
+ performance: Performance
235
235
  processes: Processes
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ es:
194
194
  thousand: k
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Duración promedio
200
200
  executions: Ejecuciones
201
201
  job_class: clase de trabajo
@@ -231,7 +231,7 @@ es:
231
231
  jobs: Tareas
232
232
  live_poll: En vivo
233
233
  name: "GoodJob 👍"
234
- performances: Actuación
234
+ performance: Actuación
235
235
  processes: Procesos
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ fr:
194
194
  thousand: k
195
195
  trillion: J
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Durée moyenne
200
200
  executions: Exécutions
201
201
  job_class: Catégorie d'emplois
@@ -231,7 +231,7 @@ fr:
231
231
  jobs: Jobs
232
232
  live_poll: En direct
233
233
  name: "GoodJob 👍"
234
- performances: Performance
234
+ performance: Performance
235
235
  processes: Processus
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ it:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Durata media
200
200
  executions: Esecuzioni
201
201
  job_class: Classe di lavoro
@@ -231,7 +231,7 @@ it:
231
231
  jobs: Job
232
232
  live_poll: Live Poll
233
233
  name: "GoodJob 👍"
234
- performances: Prestazione
234
+ performance: Prestazione
235
235
  processes: Processi
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ ja:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: 平均所要時間
200
200
  executions: 処刑
201
201
  job_class: 職種
@@ -231,7 +231,7 @@ ja:
231
231
  jobs: ジョブ
232
232
  live_poll: リアルタイム更新
233
233
  name: "GoodJob 👍"
234
- performances: パフォーマンス
234
+ performance: パフォーマンス
235
235
  processes: プロセス
236
236
  theme:
237
237
  auto: 自動
@@ -194,8 +194,8 @@ ko:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: 평균 지속 시간
200
200
  executions: 처형
201
201
  job_class: 직업군
@@ -231,7 +231,7 @@ ko:
231
231
  jobs: 작업
232
232
  live_poll: 실시간 업데이트
233
233
  name: "GoodJob 👍"
234
- performances: 성능
234
+ performance: 성능
235
235
  processes: 프로세스
236
236
  theme:
237
237
  auto: 자동
@@ -194,8 +194,8 @@ nl:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Gemiddelde duur
200
200
  executions: Executies
201
201
  job_class: Functie klasse
@@ -231,7 +231,7 @@ nl:
231
231
  jobs: Taken
232
232
  live_poll: Live Poll
233
233
  name: "GoodJob 👍"
234
- performances: Prestatie
234
+ performance: Prestatie
235
235
  processes: Processen
236
236
  theme:
237
237
  auto: Auto
@@ -194,8 +194,8 @@ pt-BR:
194
194
  thousand: K
195
195
  trillion: T
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Duração média
200
200
  executions: Execuções
201
201
  job_class: Classe de trabalho
@@ -231,7 +231,7 @@ pt-BR:
231
231
  jobs: Tarefas
232
232
  live_poll: Acompanhamento ao Vivo
233
233
  name: "GoodJob 👍"
234
- performances: Desempenho
234
+ performance: Desempenho
235
235
  processes: Processos
236
236
  theme:
237
237
  auto: Automático
@@ -220,8 +220,8 @@ ru:
220
220
  thousand: К
221
221
  trillion: Т
222
222
  unit: ''
223
- performances:
224
- show:
223
+ performance:
224
+ index:
225
225
  average_duration: Средняя продолжительность
226
226
  executions: Казни
227
227
  job_class: Класс работы
@@ -257,7 +257,7 @@ ru:
257
257
  jobs: Задания
258
258
  live_poll: Обновления в реальном времени
259
259
  name: "GoodJob 👍"
260
- performances: Производительность
260
+ performance: Производительность
261
261
  processes: Процессы
262
262
  theme:
263
263
  auto: Авто
@@ -194,8 +194,8 @@ tr:
194
194
  thousand: Bin
195
195
  trillion: Trilyon
196
196
  unit: ''
197
- performances:
198
- show:
197
+ performance:
198
+ index:
199
199
  average_duration: Ortalama süre
200
200
  executions: İnfazlar
201
201
  job_class: İş sınıfı
@@ -231,7 +231,7 @@ tr:
231
231
  jobs: İşler
232
232
  live_poll: Anlık Güncelleme
233
233
  name: "GoodJob 👍"
234
- performances: Verim
234
+ performance: Verim
235
235
  processes: Süreçler
236
236
  theme:
237
237
  auto: Oto
@@ -220,8 +220,8 @@ uk:
220
220
  thousand: Тис
221
221
  trillion: Трлн
222
222
  unit: ''
223
- performances:
224
- show:
223
+ performance:
224
+ index:
225
225
  average_duration: Середня тривалість
226
226
  executions: Страти
227
227
  job_class: Клас роботи
@@ -257,7 +257,7 @@ uk:
257
257
  jobs: Задачі
258
258
  live_poll: Живе Опитування
259
259
  name: "GoodJob 👍"
260
- performances: Продуктивність
260
+ performance: Продуктивність
261
261
  processes: Процеси
262
262
  theme:
263
263
  auto: Авто
data/config/routes.rb CHANGED
@@ -31,7 +31,7 @@ GoodJob::Engine.routes.draw do
31
31
 
32
32
  resources :processes, only: %i[index]
33
33
 
34
- resource :performance, only: %i[show]
34
+ resources :performance, only: %i[index]
35
35
 
36
36
  scope :frontend, controller: :frontends do
37
37
  get "modules/:name", action: :module, as: :frontend_module, constraints: { format: 'js' }
@@ -9,7 +9,7 @@ module GoodJob # :nodoc:
9
9
  :last_at
10
10
 
11
11
  def initialize(cleanup_interval_seconds: false, cleanup_interval_jobs: false)
12
- raise ArgumentError, "Do not use `0`. Use `false` to disable, or -1 to always run" if cleanup_interval_seconds == 0 || cleanup_interval_jobs == 0 # rubocop:disable Style/NumericPredicate
12
+ raise ArgumentError, "Do not use `0` for cleanup intervals. Use `false` to disable, or -1 to always run" if cleanup_interval_seconds == 0 || cleanup_interval_jobs == 0 # rubocop:disable Style/NumericPredicate
13
13
 
14
14
  self.cleanup_interval_seconds = cleanup_interval_seconds
15
15
  self.cleanup_interval_jobs = cleanup_interval_jobs
@@ -35,6 +35,8 @@ module GoodJob
35
35
  DEFAULT_DASHBOARD_LIVE_POLL_ENABLED = true
36
36
  # Default enqueue_after_transaction_commit
37
37
  DEFAULT_ENQUEUE_AFTER_TRANSACTION_COMMIT = false
38
+ # Default smaller_number_is_higher_priority
39
+ DEFAULT_SMALLER_NUMBER_IS_HIGHER_PRIORITY = true
38
40
 
39
41
  def self.validate_execution_mode(execution_mode)
40
42
  raise ArgumentError, "GoodJob execution mode must be one of #{EXECUTION_MODES.join(', ')}. It was '#{execution_mode}' which is not valid." unless execution_mode.in?(EXECUTION_MODES)
@@ -228,8 +230,8 @@ module GoodJob
228
230
  def queue_select_limit
229
231
  (
230
232
  options[:queue_select_limit] ||
231
- rails_config[:queue_select_limit] ||
232
- env['GOOD_JOB_QUEUE_SELECT_LIMIT']
233
+ rails_config[:queue_select_limit] ||
234
+ env['GOOD_JOB_QUEUE_SELECT_LIMIT']
233
235
  )&.to_i
234
236
  end
235
237
 
@@ -238,8 +240,8 @@ module GoodJob
238
240
  def idle_timeout
239
241
  (
240
242
  options[:idle_timeout] ||
241
- rails_config[:idle_timeout] ||
242
- env['GOOD_JOB_IDLE_TIMEOUT']
243
+ rails_config[:idle_timeout] ||
244
+ env['GOOD_JOB_IDLE_TIMEOUT']
243
245
  )&.to_i || nil
244
246
  end
245
247
 
@@ -267,69 +269,38 @@ module GoodJob
267
269
  # Positive values will clean up after that many jobs have run, false or 0 will disable, and -1 will clean up after every job.
268
270
  # @return [Integer, Boolean, nil]
269
271
  def cleanup_interval_jobs
270
- if rails_config.key?(:cleanup_interval_jobs)
271
- value = rails_config[:cleanup_interval_jobs]
272
- if value.nil?
273
- GoodJob.deprecator.warn(
274
- %(Setting `config.good_job.cleanup_interval_jobs` to `nil` will no longer disable count-based cleanups in GoodJob v4. Set to `false` to disable, or `-1` to run every time.)
275
- )
276
- value = false
277
- elsif value == 0 # rubocop:disable Style/NumericPredicate
278
- GoodJob.deprecator.warn(
279
- %(Setting `config.good_job.cleanup_interval_jobs` to `0` will disable count-based cleanups in GoodJob v4. Set to `false` to disable, or `-1` to run every time.)
280
- )
281
- value = -1
282
- end
283
- elsif env.key?('GOOD_JOB_CLEANUP_INTERVAL_JOBS')
284
- value = env['GOOD_JOB_CLEANUP_INTERVAL_JOBS']
285
- if value.blank?
286
- GoodJob.deprecator.warn(
287
- %(Setting `GOOD_JOB_CLEANUP_INTERVAL_JOBS` to `""` will no longer disable count-based cleanups in GoodJob v4. Set to `0` to disable, or `-1` to run every time.)
288
- )
289
- value = false
290
- elsif value == '0'
291
- value = false
292
- end
272
+ value = if rails_config.key?(:cleanup_interval_jobs)
273
+ rails_config[:cleanup_interval_jobs]
274
+ elsif env.key?('GOOD_JOB_CLEANUP_INTERVAL_JOBS')
275
+ env['GOOD_JOB_CLEANUP_INTERVAL_JOBS']
276
+ end
277
+
278
+ if value.in? [nil, "", true]
279
+ DEFAULT_CLEANUP_INTERVAL_JOBS
280
+ elsif value.in? [0, "0", false, "false"]
281
+ false
293
282
  else
294
- value = DEFAULT_CLEANUP_INTERVAL_JOBS
283
+ value ? value.to_i : false
295
284
  end
296
-
297
- value ? value.to_i : false
298
285
  end
299
286
 
300
287
  # Number of seconds a {Scheduler} will wait before automatically cleaning up preserved jobs.
301
288
  # Positive values will clean up after that many jobs have run, false or 0 will disable, and -1 will clean up after every job.
302
- # @return [Integer, nil]
289
+ # @return [Integer, Boolean, nil]
303
290
  def cleanup_interval_seconds
304
- if rails_config.key?(:cleanup_interval_seconds)
305
- value = rails_config[:cleanup_interval_seconds]
306
-
307
- if value.nil?
308
- GoodJob.deprecator.warn(
309
- %(Setting `config.good_job.cleanup_interval_seconds` to `nil` will no longer disable time-based cleanups in GoodJob v4. Set to `false` to disable, or `-1` to run every time.)
310
- )
311
- value = false
312
- elsif value == 0 # rubocop:disable Style/NumericPredicate
313
- GoodJob.deprecator.warn(
314
- %(Setting `config.good_job.cleanup_interval_seconds` to `0` will disable time-based cleanups in GoodJob v4. Set to `false` to disable, or `-1` to run every time.)
315
- )
316
- value = -1
317
- end
318
- elsif env.key?('GOOD_JOB_CLEANUP_INTERVAL_SECONDS')
319
- value = env['GOOD_JOB_CLEANUP_INTERVAL_SECONDS']
320
- if value.blank?
321
- GoodJob.deprecator.warn(
322
- %(Setting `GOOD_JOB_CLEANUP_INTERVAL_SECONDS` to `""` will no longer disable time-based cleanups in GoodJob v4. Set to `0` to disable, or `-1` to run every time.)
323
- )
324
- value = false
325
- elsif value == '0'
326
- value = false
327
- end
291
+ value = if rails_config.key?(:cleanup_interval_seconds)
292
+ rails_config[:cleanup_interval_seconds]
293
+ elsif env.key?('GOOD_JOB_CLEANUP_INTERVAL_SECONDS')
294
+ env['GOOD_JOB_CLEANUP_INTERVAL_SECONDS']
295
+ end
296
+
297
+ if value.nil? || value == "" || value == true
298
+ DEFAULT_CLEANUP_INTERVAL_SECONDS
299
+ elsif value.in? [0, "0", false, "false"]
300
+ false
328
301
  else
329
- value = DEFAULT_CLEANUP_INTERVAL_SECONDS
302
+ value ? value.to_i : false
330
303
  end
331
-
332
- value ? value.to_i : false
333
304
  end
334
305
 
335
306
  # Tests whether to daemonize the process.
@@ -378,7 +349,9 @@ module GoodJob
378
349
  end
379
350
 
380
351
  def smaller_number_is_higher_priority
381
- rails_config[:smaller_number_is_higher_priority]
352
+ return rails_config[:smaller_number_is_higher_priority] unless rails_config[:smaller_number_is_higher_priority].nil?
353
+
354
+ DEFAULT_SMALLER_NUMBER_IS_HIGHER_PRIORITY
382
355
  end
383
356
 
384
357
  def dashboard_default_locale
@@ -2,7 +2,7 @@
2
2
 
3
3
  module GoodJob
4
4
  # GoodJob gem version.
5
- VERSION = '4.0.0'
5
+ VERSION = '4.0.2'
6
6
 
7
7
  # GoodJob version as Gem::Version object
8
8
  GEM_VERSION = Gem::Version.new(VERSION)
data/lib/good_job.rb CHANGED
@@ -269,7 +269,11 @@ module GoodJob
269
269
  # Tests whether GoodJob can be safely upgraded to v4
270
270
  # @return [Boolean]
271
271
  def self.v4_ready?
272
- GoodJob::Job.discrete_support? && GoodJob::Job.where(finished_at: nil).where(is_discrete: [nil, false]).none?
272
+ GoodJob.deprecator.warn(<<~MSG)
273
+ Calling `GoodJob.v4_ready?` is deprecated and will be removed in GoodJob v5.
274
+ If you are reading this deprecation you are already on v4.
275
+ MSG
276
+ true
273
277
  end
274
278
 
275
279
  # Deprecator for providing deprecation warnings.
@@ -281,9 +285,6 @@ module GoodJob
281
285
  end
282
286
  end
283
287
 
284
- include ActiveSupport::Deprecation::DeprecatedConstantAccessor
285
- deprecate_constant :Lockable, 'GoodJob::AdvisoryLockable', deprecator: deprecator
286
-
287
288
  # Whether all GoodJob migrations have been applied.
288
289
  # For use in tests/CI to validate GoodJob is up-to-date.
289
290
  # @return [Boolean]
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: 4.0.0
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sheldon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-07 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -255,7 +255,7 @@ files:
255
255
  - app/controllers/good_job/frontends_controller.rb
256
256
  - app/controllers/good_job/jobs_controller.rb
257
257
  - app/controllers/good_job/metrics_controller.rb
258
- - app/controllers/good_job/performances_controller.rb
258
+ - app/controllers/good_job/performance_controller.rb
259
259
  - app/controllers/good_job/processes_controller.rb
260
260
  - app/filters/good_job/base_filter.rb
261
261
  - app/filters/good_job/batches_filter.rb
@@ -307,7 +307,7 @@ files:
307
307
  - app/views/good_job/jobs/_table.erb
308
308
  - app/views/good_job/jobs/index.html.erb
309
309
  - app/views/good_job/jobs/show.html.erb
310
- - app/views/good_job/performances/show.html.erb
310
+ - app/views/good_job/performance/index.html.erb
311
311
  - app/views/good_job/processes/index.html.erb
312
312
  - app/views/good_job/shared/_alert.erb
313
313
  - app/views/good_job/shared/_chart.erb