pgbus 0.9.5 → 0.9.6

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: 4add7dbee0e372ddbfcb644190f4cb1a564e89c3809ecc0a5c16b6f0ff36a6b9
4
- data.tar.gz: c5a028268a5966b2d20849789bdca929451425c7f85ebf98347e298fd91de95f
3
+ metadata.gz: 71ef7f4e4fa290e422b8ce72402833f6a31fd7cb3d081aef8a4bfcc09fc467eb
4
+ data.tar.gz: 31a6522c809392316d28125b0fe8e972c6e18ca8b48510d8f891135b75c3e63c
5
5
  SHA512:
6
- metadata.gz: 83f391a1a0e013a708727f02255b5122dab340f57cdde1b038d77449bc534d30d73296023fafa8cd0985bd1b219a5d7269a6a3ecaba33be24bcd58e846fa1fd0
7
- data.tar.gz: f426ac4fcde58e6b6b76154120a9cdfe2bc6efaccdecee72f55fd510a136dd1e0e289e87f912d3b96670b5d8b6531523b551a692c02094e9459ea60e388ed4e8
6
+ metadata.gz: 7554038df6c2a70435a615a2594425ff05ce102953b445a7ad5f47ee3d69a7e81e32445f9e790d987d71b5b17aa807250ebadae6d50f191da3eb23c0676b8f98
7
+ data.tar.gz: fadb07428ddbaead22200de2ff1031ff924d75e4fa5cc7ea48307ab7a22e8cf84b7528ea3a69f25baab402732a7804046005e6c1b1fd33fced91823de4702896
data/Rakefile CHANGED
@@ -11,6 +11,19 @@ require "rubocop/rake_task"
11
11
  RuboCop::RakeTask.new
12
12
 
13
13
  namespace :bench do
14
+ bench_dir = "benchmarks"
15
+ # Benches that need a real PostgreSQL/PGMQ (or boot Puma) — excluded from the
16
+ # no-DB unit suite that bench:all runs in CI.
17
+ db_benches = %w[connection_pool_bench integration_bench streams_bench].freeze
18
+ # The unit suite is every *_bench.rb that doesn't need a database, derived
19
+ # from the directory so a new unit bench is picked up automatically (kept in
20
+ # sync with bench:one, which globs the same files).
21
+ unit_benches = Dir["#{bench_dir}/*_bench.rb"]
22
+ .map { |f| File.basename(f, ".rb") }
23
+ .reject { |name| db_benches.include?(name) }
24
+ .sort
25
+ .freeze
26
+
14
27
  desc "Run serialization benchmarks"
15
28
  task :serialization do
16
29
  ruby "benchmarks/serialization_bench.rb"
@@ -41,11 +54,51 @@ namespace :bench do
41
54
  ruby "benchmarks/streams_bench.rb"
42
55
  end
43
56
 
44
- desc "Run all benchmarks (unit-level, no DB required)"
45
- task all: %i[serialization client executor]
57
+ desc "Run a single benchmark: rake bench:one[client_bench]"
58
+ task :one, [:name] do |_t, args|
59
+ name = args[:name] or abort "Usage: rake bench:one[serialization_bench|client_bench|...]"
60
+ available = Dir["#{bench_dir}/*_bench.rb"].map { |f| File.basename(f, ".rb") }
61
+ abort "No such benchmark: #{name}. Available: #{available.sort.join(", ")}" unless available.include?(name)
62
+ ruby "#{bench_dir}/#{name}.rb"
63
+ end
64
+
65
+ desc "Run all unit-level benchmarks, save report to tmp/benchmarks/"
66
+ task :all do
67
+ require "fileutils"
68
+ require "open3"
69
+ require "rbconfig"
70
+ FileUtils.mkdir_p("tmp/benchmarks")
71
+
72
+ # Run each bench under the SAME Ruby + gemset as this Rake process, not a
73
+ # bare `ruby` from PATH — otherwise before/after numbers are unreliable and
74
+ # gem loading can break under a different interpreter.
75
+ ruby = RbConfig.ruby
76
+ failed = []
77
+
78
+ File.open("tmp/benchmarks/unit.txt", "w") do |report|
79
+ unit_benches.each do |name|
80
+ file = "#{bench_dir}/#{name}.rb"
81
+ header = "\n### #{file} ###"
82
+ puts "\e[1;35m#{header}\e[0m"
83
+ report.puts header
84
+
85
+ result, status = Open3.capture2e(ruby, file)
86
+ puts result
87
+ report.puts result.gsub(/\e\[[0-9;]*m/, "")
88
+
89
+ unless status.success?
90
+ failed << file
91
+ report.puts "!!! FAILED (exit #{status.exitstatus})"
92
+ end
93
+ end
94
+ end
95
+
96
+ puts "\nSaved report to tmp/benchmarks/unit.txt"
97
+ abort "\nBenchmark(s) failed: #{failed.join(", ")}" if failed.any?
98
+ end
46
99
  end
47
100
 
48
- desc "Run all benchmarks"
101
+ desc "Run all benchmarks (alias for bench:all)"
49
102
  task bench: "bench:all"
50
103
 
51
104
  desc "Build gem and verify contents"
@@ -3,7 +3,11 @@
3
3
  module Pgbus
4
4
  class DeadLetterController < ApplicationController
5
5
  def index
6
- @messages = data_source.dlq_messages(page: page_param, per_page: per_page)
6
+ @page = page_param
7
+ @per_page = per_page
8
+ @messages = data_source.dlq_messages(page: @page, per_page: @per_page)
9
+ @total_count = data_source.dlq_total_count
10
+ @total_pages = (@total_count.to_f / @per_page).ceil
7
11
  render_frame("pgbus/dead_letter/messages_table") if params[:frame] == "list"
8
12
  end
9
13
 
@@ -19,7 +19,7 @@
19
19
  <% @recent_failures.each do |f| %>
20
20
  <tr>
21
21
  <td data-label="Queue" class="px-4 py-3 text-sm text-gray-700"><%= f["queue_name"] %></td>
22
- <td data-label="Error" class="px-4 py-3 text-sm text-red-600 truncate max-w-xs"><%= f["error_class"] %>: <%= truncate(f["error_message"].to_s, length: 60) %></td>
22
+ <td data-label="Error" class="px-4 py-3 text-sm text-red-600 truncate max-w-xs" title="<%= f["error_class"] %>: <%= f["error_message"] %>"><%= f["error_class"] %>: <%= truncate(f["error_message"].to_s, length: 60) %></td>
23
23
  <td data-label="Time" class="px-4 py-3 text-sm text-gray-500"><%= pgbus_time_ago(f["failed_at"]) %></td>
24
24
  </tr>
25
25
  <% end %>
@@ -31,6 +31,7 @@
31
31
  <p class="mt-1 text-3xl font-semibold <%= (@stats[:failed_count] + @stats[:dlq_depth]) > 0 ? 'text-red-600 dark:text-red-400' : 'text-gray-900 dark:text-white' %>">
32
32
  <%= @stats[:failed_count] %> / <%= @stats[:dlq_depth] %>
33
33
  </p>
34
+ <p class="text-xs text-gray-400 dark:text-gray-500"><%= t("pgbus.dashboard.stats_cards.failed_dlq_labels") %></p>
34
35
  </div>
35
36
 
36
37
  <div class="rounded-lg bg-white dark:bg-gray-800 p-5 shadow ring-1 ring-gray-200 dark:ring-gray-700">
@@ -1,4 +1,11 @@
1
- <turbo-frame id="dlq-messages" data-auto-refresh data-src="<%= pgbus.dead_letter_index_path(frame: 'list') %>">
1
+ <turbo-frame id="dlq-messages" data-auto-refresh data-src="<%= pgbus.dead_letter_index_path(frame: 'list', page: @page) %>">
2
+ <%# Count badge lives inside the frame so it refreshes in lockstep with the table. %>
3
+ <% if @total_count && @total_count > 0 %>
4
+ <p class="mb-3 text-sm text-gray-500 dark:text-gray-400">
5
+ <span class="inline-flex items-center rounded-full bg-red-100 dark:bg-red-900 px-2.5 py-0.5 text-sm font-medium text-red-800 dark:text-red-200"><%= @total_count %></span>
6
+ <%= t("pgbus.dead_letter.messages_table.total_label") %>
7
+ </p>
8
+ <% end %>
2
9
  <%# Bulk form outside table to avoid nested form issues %>
3
10
  <form id="bulk-discard-dlq-form" action="<%= pgbus.discard_selected_dead_letter_index_path %>" method="post" data-turbo-frame="_top" class="hidden">
4
11
  <%= hidden_field_tag :authenticity_token, form_authenticity_token %>
@@ -91,5 +98,30 @@
91
98
  <% end %>
92
99
  </tbody>
93
100
  </table>
101
+ <% if @total_count && @total_count > 0 %>
102
+ <div class="flex items-center justify-between border-t border-gray-200 dark:border-gray-700 px-4 py-3">
103
+ <p class="text-sm text-gray-500 dark:text-gray-400">
104
+ <% from = (@page - 1) * @per_page + 1 %>
105
+ <% to = [from + @messages.size - 1, @total_count].min %>
106
+ <%= t("pgbus.helpers.pagination.showing", from: from, to: to, total: @total_count) %>
107
+ </p>
108
+ <% if @total_pages > 1 %>
109
+ <nav class="inline-flex rounded-lg shadow-sm" role="navigation" aria-label="Pagination">
110
+ <% if @page > 1 %>
111
+ <%= link_to t("pgbus.helpers.pagination.previous"), pgbus.dead_letter_index_path(page: @page - 1),
112
+ class: "px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-l-lg bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700" %>
113
+ <% else %>
114
+ <span class="px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-l-lg bg-gray-100 dark:bg-gray-900 text-gray-400 dark:text-gray-600 cursor-not-allowed"><%= t("pgbus.helpers.pagination.previous") %></span>
115
+ <% end %>
116
+ <% if @page < @total_pages %>
117
+ <%= link_to t("pgbus.helpers.pagination.next"), pgbus.dead_letter_index_path(page: @page + 1),
118
+ class: "-ml-px px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-r-lg bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700" %>
119
+ <% else %>
120
+ <span class="-ml-px px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-r-lg bg-gray-100 dark:bg-gray-900 text-gray-400 dark:text-gray-600 cursor-not-allowed"><%= t("pgbus.helpers.pagination.next") %></span>
121
+ <% end %>
122
+ </nav>
123
+ <% end %>
124
+ </div>
125
+ <% end %>
94
126
  </div>
95
127
  </turbo-frame>
@@ -4,7 +4,7 @@
4
4
  <p class="mt-1 text-sm text-gray-500 dark:text-gray-400"><%= t("pgbus.insights.show.description_html", range: pgbus_time_range_label(@minutes)) %></p>
5
5
  </div>
6
6
  <nav class="inline-flex rounded-lg shadow-sm" role="group" aria-label="Time range">
7
- <% ranges = [["1h", 60], ["24h", 1440], ["7d", 10_080], ["30d", 43_200]] %>
7
+ <% ranges = [["1h", 60], ["4h", 240], ["24h", 1440], ["7d", 10_080], ["30d", 43_200]] %>
8
8
  <% ranges.each_with_index do |(label, mins), i| %>
9
9
  <%
10
10
  active = @minutes == mins
@@ -51,7 +51,7 @@
51
51
  <%= link_to f["id"], pgbus.job_path(f["id"]), class: "text-indigo-600 hover:text-indigo-500", data: { turbo_frame: "_top" } %>
52
52
  </td>
53
53
  <td data-label="Queue" class="px-4 py-3 text-sm text-gray-700"><%= f["queue_name"] %></td>
54
- <td data-label="Error" class="px-4 py-3 text-sm text-red-600 max-w-sm truncate">
54
+ <td data-label="Error" class="px-4 py-3 text-sm text-red-600 max-w-sm truncate" title="<%= f["error_class"] %>: <%= f["error_message"] %>">
55
55
  <span class="font-medium"><%= f["error_class"] %></span>: <%= truncate(f["error_message"].to_s, length: 80) %>
56
56
  </td>
57
57
  <td data-label="Retries" class="px-4 py-3 text-sm text-gray-500"><%= f["retry_count"] %></td>
@@ -1,3 +1,6 @@
1
+ <div class="mb-3">
2
+ <%= link_to "← #{t("pgbus.queues.show.back")}", pgbus.queues_path, class: "text-sm text-indigo-600 hover:text-indigo-500 dark:text-indigo-400" %>
3
+ </div>
1
4
  <div class="flex items-center justify-between mb-6">
2
5
  <div>
3
6
  <h1 class="text-2xl font-bold text-gray-900 dark:text-white">
@@ -84,6 +84,7 @@ da:
84
84
  stats_cards:
85
85
  enqueued: Sat i kø
86
86
  failed_dlq: Mislykkedes / DLQ
87
+ failed_dlq_labels: Fejlet / Dead Lettered
87
88
  processes: Processer
88
89
  queues: Køer
89
90
  recurring: Gentagende
@@ -126,6 +127,7 @@ da:
126
127
  queue: 'Kø:'
127
128
  visible_at: 'Synlig ved:'
128
129
  retry: Forsøg igen
130
+ total_label: beskeder i dead letter-kø
129
131
  show:
130
132
  back: Tilbage til DLQ
131
133
  discard: Kassér
@@ -225,6 +227,10 @@ da:
225
227
  bulk_select_all: Vælg alle
226
228
  bulk_select_row: Vælg %{id}
227
229
  bulk_selected: valgt
230
+ pagination:
231
+ next: Næste
232
+ previous: Forrige
233
+ showing: Viser %{from}–%{to} af %{total}
228
234
  paused_badge: Pause
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ da:
477
483
  resume: Genoptag
478
484
  show:
479
485
  arguments: Argumenter
486
+ back: Tilbage til køer
480
487
  delete_confirm: Slet denne kø permanent? Dette kan ikke fortrydes.
481
488
  delete_queue: Slet kø
482
489
  depth: 'Dybde:'
@@ -84,6 +84,7 @@ de:
84
84
  stats_cards:
85
85
  enqueued: Eingereiht
86
86
  failed_dlq: Fehlgeschlagen / DLQ
87
+ failed_dlq_labels: Fehlgeschlagen / Dead Lettered
87
88
  processes: Prozesse
88
89
  queues: Warteschlangen
89
90
  recurring: Wiederkehrend
@@ -126,6 +127,7 @@ de:
126
127
  queue: 'Warteschlange:'
127
128
  visible_at: 'Sichtbar um:'
128
129
  retry: Erneut versuchen
130
+ total_label: Nachrichten in der Dead-Letter-Warteschlange
129
131
  show:
130
132
  back: Zurück zur DLQ
131
133
  discard: Verwerfen
@@ -225,6 +227,10 @@ de:
225
227
  bulk_select_all: Alle auswählen
226
228
  bulk_select_row: "%{id} auswählen"
227
229
  bulk_selected: ausgewählt
230
+ pagination:
231
+ next: Weiter
232
+ previous: Zurück
233
+ showing: Zeige %{from}–%{to} von %{total}
228
234
  paused_badge: Pausiert
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ de:
477
483
  resume: Fortsetzen
478
484
  show:
479
485
  arguments: Argumente
486
+ back: Zurück zu Warteschlangen
480
487
  delete_confirm: Diese Warteschlange dauerhaft löschen? Dies kann nicht rückgängig gemacht werden.
481
488
  delete_queue: Warteschlange löschen
482
489
  depth: 'Tiefe:'
@@ -84,6 +84,7 @@ en:
84
84
  stats_cards:
85
85
  enqueued: Enqueued
86
86
  failed_dlq: Failed / DLQ
87
+ failed_dlq_labels: Failed / Dead Lettered
87
88
  processes: Processes
88
89
  queues: Queues
89
90
  recurring: Recurring
@@ -126,6 +127,7 @@ en:
126
127
  queue: 'Queue:'
127
128
  visible_at: 'Visible at:'
128
129
  retry: Retry
130
+ total_label: messages in dead letter queue
129
131
  show:
130
132
  back: Back to DLQ
131
133
  discard: Discard
@@ -225,6 +227,10 @@ en:
225
227
  bulk_select_all: Select all
226
228
  bulk_select_row: Select %{id}
227
229
  bulk_selected: selected
230
+ pagination:
231
+ next: Next
232
+ previous: Previous
233
+ showing: Showing %{from}–%{to} of %{total}
228
234
  paused_badge: Paused
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ en:
477
483
  resume: Resume
478
484
  show:
479
485
  arguments: Arguments
486
+ back: Back to Queues
480
487
  delete_confirm: Permanently delete this queue? This cannot be undone.
481
488
  delete_queue: Delete Queue
482
489
  depth: 'Depth:'
@@ -84,6 +84,7 @@ es:
84
84
  stats_cards:
85
85
  enqueued: Encolado
86
86
  failed_dlq: Fallidos / DLQ
87
+ failed_dlq_labels: Fallidos / Dead Lettered
87
88
  processes: Procesos
88
89
  queues: Colas
89
90
  recurring: Recurrente
@@ -126,6 +127,7 @@ es:
126
127
  queue: 'Cola:'
127
128
  visible_at: 'Visible en:'
128
129
  retry: Reintentar
130
+ total_label: mensajes en la cola de mensajes fallidos
129
131
  show:
130
132
  back: Volver a DLQ
131
133
  discard: Descartar
@@ -225,6 +227,10 @@ es:
225
227
  bulk_select_all: Seleccionar todo
226
228
  bulk_select_row: Seleccionar %{id}
227
229
  bulk_selected: seleccionado
230
+ pagination:
231
+ next: Siguiente
232
+ previous: Anterior
233
+ showing: Mostrando %{from}–%{to} de %{total}
228
234
  paused_badge: Pausado
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ es:
477
483
  resume: Reanudar
478
484
  show:
479
485
  arguments: Argumentos
486
+ back: Volver a colas
480
487
  delete_confirm: "¿Eliminar permanentemente esta cola? Esto no se puede deshacer."
481
488
  delete_queue: Eliminar cola
482
489
  depth: 'Profundidad:'
@@ -84,6 +84,7 @@ fi:
84
84
  stats_cards:
85
85
  enqueued: Lisätty jonoon
86
86
  failed_dlq: Epäonnistuneet / DLQ
87
+ failed_dlq_labels: Epäonnistuneet / Dead Lettered
87
88
  processes: Prosessit
88
89
  queues: Jonot
89
90
  recurring: Toistuva
@@ -126,6 +127,7 @@ fi:
126
127
  queue: 'Jono:'
127
128
  visible_at: 'Näkyvissä klo:'
128
129
  retry: Yritä uudelleen
130
+ total_label: viestiä dead letter -jonossa
129
131
  show:
130
132
  back: Takaisin DLQ:hon
131
133
  discard: Hylkää
@@ -225,6 +227,10 @@ fi:
225
227
  bulk_select_all: Valitse kaikki
226
228
  bulk_select_row: Valitse %{id}
227
229
  bulk_selected: valittu
230
+ pagination:
231
+ next: Seuraava
232
+ previous: Edellinen
233
+ showing: Näytetään %{from}–%{to} / %{total}
228
234
  paused_badge: Tauolla
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ fi:
477
483
  resume: Jatka
478
484
  show:
479
485
  arguments: Argumentit
486
+ back: Takaisin jonoihin
480
487
  delete_confirm: Poista tämä jono pysyvästi? Tätä ei voi kumota.
481
488
  delete_queue: Poista jono
482
489
  depth: 'Syvyys:'
@@ -84,6 +84,7 @@ fr:
84
84
  stats_cards:
85
85
  enqueued: Enregistré
86
86
  failed_dlq: Échoué / DLQ
87
+ failed_dlq_labels: Échoués / Dead Lettered
87
88
  processes: Processus
88
89
  queues: Files d'attente
89
90
  recurring: Récurrent
@@ -126,6 +127,7 @@ fr:
126
127
  queue: 'File d''attente :'
127
128
  visible_at: 'Visible à :'
128
129
  retry: Réessayer
130
+ total_label: messages dans la file de lettres mortes
129
131
  show:
130
132
  back: Retour à la DLQ
131
133
  discard: Ignorer
@@ -225,6 +227,10 @@ fr:
225
227
  bulk_select_all: Tout sélectionner
226
228
  bulk_select_row: Sélectionner %{id}
227
229
  bulk_selected: sélectionné
230
+ pagination:
231
+ next: Suivant
232
+ previous: Précédent
233
+ showing: Affichage de %{from}–%{to} sur %{total}
228
234
  paused_badge: En pause
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ fr:
477
483
  resume: Reprendre
478
484
  show:
479
485
  arguments: Arguments
486
+ back: Retour aux files d'attente
480
487
  delete_confirm: Supprimer définitivement cette file d'attente ? Cette action est irréversible.
481
488
  delete_queue: Supprimer la file d'attente
482
489
  depth: 'Profondeur :'
@@ -84,6 +84,7 @@ it:
84
84
  stats_cards:
85
85
  enqueued: In coda
86
86
  failed_dlq: Falliti / DLQ
87
+ failed_dlq_labels: Falliti / Dead Lettered
87
88
  processes: Processi
88
89
  queues: Code
89
90
  recurring: Ricorrente
@@ -126,6 +127,7 @@ it:
126
127
  queue: 'Coda:'
127
128
  visible_at: 'Visibile alle:'
128
129
  retry: Riprova
130
+ total_label: messaggi nella coda dei messaggi non recapitati
129
131
  show:
130
132
  back: Torna a DLQ
131
133
  discard: Scarta
@@ -225,6 +227,10 @@ it:
225
227
  bulk_select_all: Seleziona tutto
226
228
  bulk_select_row: Seleziona %{id}
227
229
  bulk_selected: selezionato
230
+ pagination:
231
+ next: Avanti
232
+ previous: Indietro
233
+ showing: Visualizzazione %{from}–%{to} di %{total}
228
234
  paused_badge: In pausa
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ it:
477
483
  resume: Riprendi
478
484
  show:
479
485
  arguments: Argomenti
486
+ back: Torna alle code
480
487
  delete_confirm: Eliminare permanentemente questa coda? Questa azione non può essere annullata.
481
488
  delete_queue: Elimina coda
482
489
  depth: 'Profondità:'
@@ -84,6 +84,7 @@ ja:
84
84
  stats_cards:
85
85
  enqueued: キューに追加済み
86
86
  failed_dlq: 失敗 / DLQ
87
+ failed_dlq_labels: 失敗 / Dead Lettered
87
88
  processes: プロセス
88
89
  queues: キュー
89
90
  recurring: 繰り返し
@@ -126,6 +127,7 @@ ja:
126
127
  queue: 'キュー:'
127
128
  visible_at: '表示日時:'
128
129
  retry: 再試行
130
+ total_label: デッドレターキュー内のメッセージ
129
131
  show:
130
132
  back: DLQに戻る
131
133
  discard: 破棄
@@ -225,6 +227,10 @@ ja:
225
227
  bulk_select_all: すべて選択
226
228
  bulk_select_row: "%{id}を選択"
227
229
  bulk_selected: 選択済み
230
+ pagination:
231
+ next: 次へ
232
+ previous: 前へ
233
+ showing: "%{total} 件中 %{from}–%{to} 件を表示"
228
234
  paused_badge: 一時停止中
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ ja:
477
483
  resume: 再開
478
484
  show:
479
485
  arguments: 引数
486
+ back: キューに戻る
480
487
  delete_confirm: このキューを完全に削除しますか?この操作は取り消せません。
481
488
  delete_queue: キューを削除
482
489
  depth: 深さ:
@@ -84,6 +84,7 @@ nb:
84
84
  stats_cards:
85
85
  enqueued: I kø
86
86
  failed_dlq: Mislyktes / DLQ
87
+ failed_dlq_labels: Mislyktes / Dead Lettered
87
88
  processes: Prosesser
88
89
  queues: Køer
89
90
  recurring: Gjentakende
@@ -126,6 +127,7 @@ nb:
126
127
  queue: 'Kø:'
127
128
  visible_at: 'Synlig ved:'
128
129
  retry: Prøv igjen
130
+ total_label: meldinger i dead letter-kø
129
131
  show:
130
132
  back: Tilbake til DLQ
131
133
  discard: Forkast
@@ -225,6 +227,10 @@ nb:
225
227
  bulk_select_all: Velg alle
226
228
  bulk_select_row: Velg %{id}
227
229
  bulk_selected: valgt
230
+ pagination:
231
+ next: Neste
232
+ previous: Forrige
233
+ showing: Viser %{from}–%{to} av %{total}
228
234
  paused_badge: Pause
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ nb:
477
483
  resume: Gjenoppta
478
484
  show:
479
485
  arguments: Argumenter
486
+ back: Tilbake til køer
480
487
  delete_confirm: Slette denne køen permanent? Dette kan ikke angres.
481
488
  delete_queue: Slett kø
482
489
  depth: 'Dybde:'
@@ -84,6 +84,7 @@ nl:
84
84
  stats_cards:
85
85
  enqueued: In de wachtrij geplaatst
86
86
  failed_dlq: Mislukt / DLQ
87
+ failed_dlq_labels: Mislukt / Dead Lettered
87
88
  processes: Processen
88
89
  queues: Wachtrijen
89
90
  recurring: Terugkerend
@@ -126,6 +127,7 @@ nl:
126
127
  queue: 'Wachtrij:'
127
128
  visible_at: 'Zichtbaar op:'
128
129
  retry: Opnieuw proberen
130
+ total_label: berichten in dead letter-wachtrij
129
131
  show:
130
132
  back: Terug naar DLQ
131
133
  discard: Verwerpen
@@ -225,6 +227,10 @@ nl:
225
227
  bulk_select_all: Alles selecteren
226
228
  bulk_select_row: Selecteer %{id}
227
229
  bulk_selected: geselecteerd
230
+ pagination:
231
+ next: Volgende
232
+ previous: Vorige
233
+ showing: "%{from}–%{to} van %{total} weergegeven"
228
234
  paused_badge: Gepauzeerd
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ nl:
477
483
  resume: Hervatten
478
484
  show:
479
485
  arguments: Argumenten
486
+ back: Terug naar wachtrijen
480
487
  delete_confirm: Deze wachtrij permanent verwijderen? Dit kan niet ongedaan worden gemaakt.
481
488
  delete_queue: Wachtrij verwijderen
482
489
  depth: 'Diepte:'
@@ -84,6 +84,7 @@ pt:
84
84
  stats_cards:
85
85
  enqueued: Enfileirado
86
86
  failed_dlq: Falhou / DLQ
87
+ failed_dlq_labels: Falhados / Dead Lettered
87
88
  processes: Processos
88
89
  queues: Filas
89
90
  recurring: Recorrente
@@ -126,6 +127,7 @@ pt:
126
127
  queue: 'Fila:'
127
128
  visible_at: 'Visível em:'
128
129
  retry: Tentar novamente
130
+ total_label: mensagens na fila de mensagens mortas
129
131
  show:
130
132
  back: Voltar para DLQ
131
133
  discard: Descartar
@@ -225,6 +227,10 @@ pt:
225
227
  bulk_select_all: Selecionar todos
226
228
  bulk_select_row: Selecionar %{id}
227
229
  bulk_selected: selecionado
230
+ pagination:
231
+ next: Próximo
232
+ previous: Anterior
233
+ showing: Mostrando %{from}–%{to} de %{total}
228
234
  paused_badge: Pausado
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ pt:
477
483
  resume: Retomar
478
484
  show:
479
485
  arguments: Argumentos
486
+ back: Voltar às filas
480
487
  delete_confirm: Excluir permanentemente esta fila? Esta ação não pode ser desfeita.
481
488
  delete_queue: Excluir fila
482
489
  depth: 'Profundidade:'
@@ -84,6 +84,7 @@ sv:
84
84
  stats_cards:
85
85
  enqueued: Inlagda
86
86
  failed_dlq: Misslyckade / DLQ
87
+ failed_dlq_labels: Misslyckade / Dead Lettered
87
88
  processes: Processer
88
89
  queues: Köer
89
90
  recurring: Återkommande
@@ -126,6 +127,7 @@ sv:
126
127
  queue: 'Kö:'
127
128
  visible_at: 'Synlig vid:'
128
129
  retry: Försök igen
130
+ total_label: meddelanden i dead letter-kö
129
131
  show:
130
132
  back: Tillbaka till DLQ
131
133
  discard: Kassera
@@ -225,6 +227,10 @@ sv:
225
227
  bulk_select_all: Markera alla
226
228
  bulk_select_row: Markera %{id}
227
229
  bulk_selected: valda
230
+ pagination:
231
+ next: Nästa
232
+ previous: Föregående
233
+ showing: Visar %{from}–%{to} av %{total}
228
234
  paused_badge: Pausad
229
235
  queue_badge:
230
236
  dlq: DLQ
@@ -477,6 +483,7 @@ sv:
477
483
  resume: Återuppta
478
484
  show:
479
485
  arguments: Argument
486
+ back: Tillbaka till köer
480
487
  delete_confirm: Ta bort denna kö permanent? Detta kan inte ångras.
481
488
  delete_queue: Ta bort kö
482
489
  depth: 'Djup:'
@@ -216,7 +216,7 @@ module Pgbus
216
216
  @web_per_page = 25
217
217
  @web_live_updates = true
218
218
  @web_data_source = nil
219
- @insights_default_minutes = 30 * 24 * 60 # 30 days
219
+ @insights_default_minutes = 60 # 1 hour
220
220
  @base_controller_class = "::ActionController::Base"
221
221
  @return_to_app_url = nil
222
222
  @metrics_enabled = true