good_job 3.29.5 → 3.30.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/README.md +3 -3
  4. data/app/controllers/good_job/performances_controller.rb +23 -0
  5. data/app/filters/good_job/base_filter.rb +1 -1
  6. data/app/helpers/good_job/application_helper.rb +1 -0
  7. data/app/models/concerns/good_job/error_events.rb +2 -2
  8. data/app/models/good_job/base_execution.rb +594 -2
  9. data/app/models/good_job/discrete_execution.rb +18 -2
  10. data/app/models/good_job/execution.rb +2 -597
  11. data/app/models/good_job/job.rb +1 -1
  12. data/app/views/good_job/performances/show.html.erb +50 -0
  13. data/app/views/good_job/shared/_navbar.erb +5 -0
  14. data/config/locales/de.yml +11 -0
  15. data/config/locales/en.yml +11 -0
  16. data/config/locales/es.yml +11 -0
  17. data/config/locales/fr.yml +11 -0
  18. data/config/locales/it.yml +11 -0
  19. data/config/locales/ja.yml +11 -0
  20. data/config/locales/ko.yml +11 -0
  21. data/config/locales/nl.yml +11 -0
  22. data/config/locales/pt-BR.yml +11 -0
  23. data/config/locales/ru.yml +11 -0
  24. data/config/locales/tr.yml +11 -0
  25. data/config/locales/uk.yml +11 -0
  26. data/config/routes.rb +2 -0
  27. data/lib/generators/good_job/templates/install/migrations/create_good_jobs.rb.erb +1 -0
  28. data/lib/generators/good_job/templates/update/migrations/13_create_good_job_process_lock_ids.rb.erb +1 -0
  29. data/lib/generators/good_job/templates/update/migrations/14_create_good_job_process_lock_indexes.rb.erb +1 -0
  30. data/lib/generators/good_job/templates/update/migrations/15_create_good_job_execution_duration.rb.erb +15 -0
  31. data/lib/good_job/version.rb +1 -1
  32. data/lib/good_job.rb +2 -2
  33. metadata +5 -2
@@ -196,6 +196,14 @@ de:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Durchschnittliche Dauer
202
+ executions: Hinrichtungen
203
+ job_class: Berufsklasse
204
+ maximum_duration: Maximale Dauer
205
+ minimum_duration: Mindestdauer
206
+ title: Leistung
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron aktiviert
@@ -225,6 +233,7 @@ de:
225
233
  jobs: Jobs
226
234
  live_poll: Live Poll
227
235
  name: "GoodJob 👍"
236
+ performances: Leistung
228
237
  processes: Prozesse
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ de:
241
250
  running: Laufend
242
251
  scheduled: Geplant
243
252
  succeeded: Erfolgreich
253
+ shared:
254
+ needs_migration: Bitte führen Sie GoodJob-Migrationen aus.
@@ -196,6 +196,14 @@ en:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Average duration
202
+ executions: Executions
203
+ job_class: Job class
204
+ maximum_duration: Maximum duration
205
+ minimum_duration: Minimum duration
206
+ title: Performance
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron enabled
@@ -225,6 +233,7 @@ en:
225
233
  jobs: Jobs
226
234
  live_poll: Live Poll
227
235
  name: "GoodJob 👍"
236
+ performances: Performance
228
237
  processes: Processes
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ en:
241
250
  running: Running
242
251
  scheduled: Scheduled
243
252
  succeeded: Succeeded
253
+ shared:
254
+ needs_migration: Please run GoodJob migrations.
@@ -196,6 +196,14 @@ es:
196
196
  thousand: k
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Duración promedio
202
+ executions: Ejecuciones
203
+ job_class: clase de trabajo
204
+ maximum_duration: Duración máxima
205
+ minimum_duration: Duración mínima
206
+ title: Actuación
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron habilitado
@@ -225,6 +233,7 @@ es:
225
233
  jobs: Tareas
226
234
  live_poll: En vivo
227
235
  name: "GoodJob 👍"
236
+ performances: Actuación
228
237
  processes: Procesos
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ es:
241
250
  running: Ejecutando
242
251
  scheduled: Programado
243
252
  succeeded: Exitoso
253
+ shared:
254
+ needs_migration: Ejecute las migraciones de GoodJob.
@@ -196,6 +196,14 @@ fr:
196
196
  thousand: k
197
197
  trillion: J
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Durée moyenne
202
+ executions: Exécutions
203
+ job_class: Catégorie d'emplois
204
+ maximum_duration: Durée maximale
205
+ minimum_duration: Durée minimale
206
+ title: Performance
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron activé
@@ -225,6 +233,7 @@ fr:
225
233
  jobs: Jobs
226
234
  live_poll: En direct
227
235
  name: "GoodJob 👍"
236
+ performances: Performance
228
237
  processes: Processus
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ fr:
241
250
  running: En cours
242
251
  scheduled: Planifiés
243
252
  succeeded: Réussis
253
+ shared:
254
+ needs_migration: Veuillez exécuter des migrations GoodJob.
@@ -196,6 +196,14 @@ it:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Durata media
202
+ executions: Esecuzioni
203
+ job_class: Classe di lavoro
204
+ maximum_duration: Durata massima
205
+ minimum_duration: Durata minima
206
+ title: Prestazione
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron abilitato
@@ -225,6 +233,7 @@ it:
225
233
  jobs: Job
226
234
  live_poll: Live Poll
227
235
  name: "GoodJob 👍"
236
+ performances: Prestazione
228
237
  processes: Processi
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ it:
241
250
  running: In esecuzione
242
251
  scheduled: Pianificato
243
252
  succeeded: Riuscito
253
+ shared:
254
+ needs_migration: Esegui le migrazioni GoodJob.
@@ -196,6 +196,14 @@ ja:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: 平均所要時間
202
+ executions: 処刑
203
+ job_class: 職種
204
+ maximum_duration: 最大持続時間
205
+ minimum_duration: 最小期間
206
+ title: パフォーマンス
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron が有効になっている
@@ -225,6 +233,7 @@ ja:
225
233
  jobs: ジョブ
226
234
  live_poll: リアルタイム更新
227
235
  name: "GoodJob 👍"
236
+ performances: パフォーマンス
228
237
  processes: プロセス
229
238
  theme:
230
239
  auto: 自動
@@ -241,3 +250,5 @@ ja:
241
250
  running: 実行中
242
251
  scheduled: スケジュール待ち
243
252
  succeeded: 成功済み
253
+ shared:
254
+ needs_migration: GoodJob 移行を実行してください。
@@ -196,6 +196,14 @@ ko:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: 평균 지속 시간
202
+ executions: 처형
203
+ job_class: 직업군
204
+ maximum_duration: 최대 기간
205
+ minimum_duration: 최소 기간
206
+ title: 성능
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron이 활성화되어 있음
@@ -225,6 +233,7 @@ ko:
225
233
  jobs: 작업
226
234
  live_poll: 실시간 업데이트
227
235
  name: "GoodJob 👍"
236
+ performances: 성능
228
237
  processes: 프로세스
229
238
  theme:
230
239
  auto: 자동
@@ -241,3 +250,5 @@ ko:
241
250
  running: 실행 중
242
251
  scheduled: 예정됨
243
252
  succeeded: 성공함
253
+ shared:
254
+ needs_migration: GoodJob 마이그레이션을 실행하세요.
@@ -196,6 +196,14 @@ nl:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Gemiddelde duur
202
+ executions: Executies
203
+ job_class: Functie klasse
204
+ maximum_duration: Maximale duur
205
+ minimum_duration: Minimale duur
206
+ title: Prestatie
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron ingeschakeld
@@ -225,6 +233,7 @@ nl:
225
233
  jobs: Taken
226
234
  live_poll: Live Poll
227
235
  name: "GoodJob 👍"
236
+ performances: Prestatie
228
237
  processes: Processen
229
238
  theme:
230
239
  auto: Auto
@@ -241,3 +250,5 @@ nl:
241
250
  running: Rennen
242
251
  scheduled: Gepland
243
252
  succeeded: Geslaagd
253
+ shared:
254
+ needs_migration: Voer GoodJob-migraties uit.
@@ -196,6 +196,14 @@ pt-BR:
196
196
  thousand: K
197
197
  trillion: T
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Duração média
202
+ executions: Execuções
203
+ job_class: Classe de trabalho
204
+ maximum_duration: Duração máxima
205
+ minimum_duration: Duração mínima
206
+ title: Desempenho
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Agendamento ativado
@@ -225,6 +233,7 @@ pt-BR:
225
233
  jobs: Tarefas
226
234
  live_poll: Acompanhamento ao Vivo
227
235
  name: "GoodJob 👍"
236
+ performances: Desempenho
228
237
  processes: Processos
229
238
  theme:
230
239
  auto: Automático
@@ -241,3 +250,5 @@ pt-BR:
241
250
  running: Em execução
242
251
  scheduled: Agendado
243
252
  succeeded: Concluído com sucesso
253
+ shared:
254
+ needs_migration: Execute migrações GoodJob.
@@ -222,6 +222,14 @@ ru:
222
222
  thousand: К
223
223
  trillion: Т
224
224
  unit: ''
225
+ performances:
226
+ show:
227
+ average_duration: Средняя продолжительность
228
+ executions: Казни
229
+ job_class: Класс работы
230
+ maximum_duration: Максимальная продолжительность
231
+ minimum_duration: Минимальная продолжительность
232
+ title: Производительность
225
233
  processes:
226
234
  index:
227
235
  cron_enabled: Cron включен
@@ -251,6 +259,7 @@ ru:
251
259
  jobs: Задания
252
260
  live_poll: Обновления в реальном времени
253
261
  name: "GoodJob 👍"
262
+ performances: Производительность
254
263
  processes: Процессы
255
264
  theme:
256
265
  auto: Авто
@@ -267,3 +276,5 @@ ru:
267
276
  running: Исполняется
268
277
  scheduled: Запланировано
269
278
  succeeded: Успешно
279
+ shared:
280
+ needs_migration: Пожалуйста, запустите миграцию GoodJob.
@@ -196,6 +196,14 @@ tr:
196
196
  thousand: Bin
197
197
  trillion: Trilyon
198
198
  unit: ''
199
+ performances:
200
+ show:
201
+ average_duration: Ortalama süre
202
+ executions: İnfazlar
203
+ job_class: İş sınıfı
204
+ maximum_duration: Maksimum süre
205
+ minimum_duration: Minimum süre
206
+ title: Verim
199
207
  processes:
200
208
  index:
201
209
  cron_enabled: Cron etkin
@@ -225,6 +233,7 @@ tr:
225
233
  jobs: İşler
226
234
  live_poll: Anlık Güncelleme
227
235
  name: "GoodJob 👍"
236
+ performances: Verim
228
237
  processes: Süreçler
229
238
  theme:
230
239
  auto: Oto
@@ -241,3 +250,5 @@ tr:
241
250
  running: Çalışıyor
242
251
  scheduled: Planlandı
243
252
  succeeded: Başarılı
253
+ shared:
254
+ needs_migration: Lütfen GoodJob geçişlerini çalıştırın.
@@ -222,6 +222,14 @@ uk:
222
222
  thousand: Тис
223
223
  trillion: Трлн
224
224
  unit: ''
225
+ performances:
226
+ show:
227
+ average_duration: Середня тривалість
228
+ executions: Страти
229
+ job_class: Клас роботи
230
+ maximum_duration: Максимальна тривалість
231
+ minimum_duration: Мінімальна тривалість
232
+ title: Продуктивність
225
233
  processes:
226
234
  index:
227
235
  cron_enabled: Cron увімкнено
@@ -251,6 +259,7 @@ uk:
251
259
  jobs: Задачі
252
260
  live_poll: Живе Опитування
253
261
  name: "GoodJob 👍"
262
+ performances: Продуктивність
254
263
  processes: Процеси
255
264
  theme:
256
265
  auto: Авто
@@ -267,3 +276,5 @@ uk:
267
276
  running: Виконується
268
277
  scheduled: Заплановано
269
278
  succeeded: Успішно виконано
279
+ shared:
280
+ needs_migration: Запустіть міграції GoodJob.
data/config/routes.rb CHANGED
@@ -31,6 +31,8 @@ GoodJob::Engine.routes.draw do
31
31
 
32
32
  resources :processes, only: %i[index]
33
33
 
34
+ resource :performance, only: %i[show]
35
+
34
36
  scope :frontend, controller: :frontends do
35
37
  get "modules/:name", action: :module, as: :frontend_module, constraints: { format: 'js' }
36
38
  get "static/:name", action: :static, as: :frontend_static, constraints: { format: %w[css js] }
@@ -61,6 +61,7 @@ class CreateGoodJobs < ActiveRecord::Migration<%= migration_version %>
61
61
  t.integer :error_event, limit: 2
62
62
  t.text :error_backtrace, array: true
63
63
  t.uuid :process_id
64
+ t.interval :duration
64
65
  end
65
66
 
66
67
  create_table :good_job_processes, id: :uuid do |t|
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class CreateGoodJobProcessLockIds < ActiveRecord::Migration<%= migration_version %>
3
4
  def change
4
5
  reversible do |dir|
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class CreateGoodJobProcessLockIndexes < ActiveRecord::Migration<%= migration_version %>
3
4
  disable_ddl_transaction!
4
5
 
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateGoodJobExecutionDuration < ActiveRecord::Migration<%= migration_version %>
4
+ def change
5
+ reversible do |dir|
6
+ dir.up do
7
+ # Ensure this incremental update migration is idempotent
8
+ # with monolithic install migration.
9
+ return if connection.column_exists?(:good_job_executions, :duration)
10
+ end
11
+ end
12
+
13
+ add_column :good_job_executions, :duration, :interval
14
+ end
15
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module GoodJob
4
4
  # GoodJob gem version.
5
- VERSION = '3.29.5'
5
+ VERSION = '3.30.1'
6
6
 
7
7
  # GoodJob version as Gem::Version object
8
8
  GEM_VERSION = Gem::Version.new(VERSION)
data/lib/good_job.rb CHANGED
@@ -286,8 +286,8 @@ module GoodJob
286
286
  # @return [Boolean]
287
287
  def self.migrated?
288
288
  # Always update with the most recent migration check
289
- GoodJob::Execution.reset_column_information
290
- GoodJob::Execution.process_lock_migrated?
289
+ GoodJob::DiscreteExecution.reset_column_information
290
+ GoodJob::DiscreteExecution.duration_interval_migrated?
291
291
  end
292
292
 
293
293
  ActiveSupport.run_load_hooks(:good_job, self)
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: 3.29.5
4
+ version: 3.30.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: 2024-06-24 00:00:00.000000000 Z
11
+ date: 2024-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -255,6 +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
259
  - app/controllers/good_job/processes_controller.rb
259
260
  - app/filters/good_job/base_filter.rb
260
261
  - app/filters/good_job/batches_filter.rb
@@ -306,6 +307,7 @@ files:
306
307
  - app/views/good_job/jobs/_table.erb
307
308
  - app/views/good_job/jobs/index.html.erb
308
309
  - app/views/good_job/jobs/show.html.erb
310
+ - app/views/good_job/performances/show.html.erb
309
311
  - app/views/good_job/processes/index.html.erb
310
312
  - app/views/good_job/shared/_alert.erb
311
313
  - app/views/good_job/shared/_chart.erb
@@ -362,6 +364,7 @@ files:
362
364
  - lib/generators/good_job/templates/update/migrations/12_create_good_job_execution_error_backtrace.rb.erb
363
365
  - lib/generators/good_job/templates/update/migrations/13_create_good_job_process_lock_ids.rb.erb
364
366
  - lib/generators/good_job/templates/update/migrations/14_create_good_job_process_lock_indexes.rb.erb
367
+ - lib/generators/good_job/templates/update/migrations/15_create_good_job_execution_duration.rb.erb
365
368
  - lib/generators/good_job/update_generator.rb
366
369
  - lib/good_job.rb
367
370
  - lib/good_job/active_job_extensions/batches.rb