good_job 4.0.0 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
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