rails_error_dashboard 0.14.4 → 0.16.0
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 +4 -4
- data/README.md +19 -8
- data/app/controllers/rails_error_dashboard/application_controller.rb +28 -4
- data/app/controllers/rails_error_dashboard/errors_controller.rb +97 -4
- data/app/controllers/rails_error_dashboard/health_controller.rb +38 -0
- data/app/controllers/rails_error_dashboard/webhooks_controller.rb +10 -9
- data/app/helpers/rails_error_dashboard/application_helper.rb +2 -2
- data/app/helpers/rails_error_dashboard/backtrace_helper.rb +63 -16
- data/app/helpers/rails_error_dashboard/overview_helper.rb +4 -0
- data/app/jobs/rails_error_dashboard/baseline_alert_job.rb +20 -2
- data/app/jobs/rails_error_dashboard/cascade_detection_job.rb +30 -0
- data/app/jobs/rails_error_dashboard/concerns/plain_channel_message.rb +33 -6
- data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +31 -0
- data/app/jobs/rails_error_dashboard/scheduled_digest_job.rb +6 -1
- data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/telegram_error_notification_job.rb +25 -0
- data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +2 -18
- data/app/models/rails_error_dashboard/error_log.rb +54 -20
- data/app/models/rails_error_dashboard/error_occurrence.rb +1 -0
- data/app/models/rails_error_dashboard/error_occurrence_context.rb +14 -0
- data/app/models/rails_error_dashboard/missing_translation.rb +43 -0
- data/app/views/layouts/rails_error_dashboard.html.erb +14 -2
- data/app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb +45 -0
- data/app/views/rails_error_dashboard/errors/_error_info.html.erb +12 -3
- data/app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb +12 -0
- data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +3 -1
- data/app/views/rails_error_dashboard/errors/_source_code.html.erb +3 -9
- data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +28 -0
- data/app/views/rails_error_dashboard/errors/boot_errors.html.erb +130 -0
- data/app/views/rails_error_dashboard/errors/index.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/missing_translations.html.erb +143 -0
- data/app/views/rails_error_dashboard/errors/overview.html.erb +10 -7
- data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +16 -11
- data/app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb +7 -4
- data/app/views/rails_error_dashboard/errors/settings.html.erb +23 -8
- data/app/views/rails_error_dashboard/errors/show.html.erb +7 -4
- data/config/locales/de.yml +87 -5
- data/config/locales/en.yml +99 -4
- data/config/locales/es.yml +88 -5
- data/config/locales/fr.yml +88 -5
- data/config/locales/it.yml +88 -5
- data/config/locales/ja.yml +86 -4
- data/config/locales/pl.yml +89 -5
- data/config/locales/pt-BR.yml +88 -5
- data/config/locales/ru.yml +89 -5
- data/config/locales/uk.yml +89 -5
- data/config/locales/zh-CN.yml +86 -4
- data/config/routes.rb +6 -0
- data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +10 -2
- data/db/migrate/20260106094256_backfill_application_for_existing_errors.rb +3 -3
- data/db/migrate/20261010000001_create_missing_translations.rb +50 -0
- data/db/migrate/20261015000001_create_rails_error_dashboard_error_occurrence_contexts.rb +35 -0
- data/db/migrate/20261015000002_add_capture_source_to_error_occurrences_and_error_logs.rb +46 -0
- data/lib/generators/rails_error_dashboard/install/install_generator.rb +9 -4
- data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +41 -5
- data/lib/rails_error_dashboard/commands/assign_error.rb +24 -1
- data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +11 -2
- data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +16 -3
- data/lib/rails_error_dashboard/commands/batch_unmute_errors.rb +7 -2
- data/lib/rails_error_dashboard/commands/find_or_increment_error.rb +6 -0
- data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +101 -0
- data/lib/rails_error_dashboard/commands/flush_rack_attack_events.rb +2 -4
- data/lib/rails_error_dashboard/commands/flush_storm_counts.rb +7 -6
- data/lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb +2 -4
- data/lib/rails_error_dashboard/commands/log_error.rb +20 -8
- data/lib/rails_error_dashboard/commands/record_occurrence_context.rb +60 -0
- data/lib/rails_error_dashboard/commands/resolve_error.rb +2 -15
- data/lib/rails_error_dashboard/commands/update_error_status.rb +7 -0
- data/lib/rails_error_dashboard/configuration.rb +61 -4
- data/lib/rails_error_dashboard/engine.rb +42 -1
- data/lib/rails_error_dashboard/error_reporter.rb +4 -2
- data/lib/rails_error_dashboard/manual_error_reporter.rb +11 -1
- data/lib/rails_error_dashboard/middleware/error_catcher.rb +18 -4
- data/lib/rails_error_dashboard/middleware/rate_limiter.rb +7 -1
- data/lib/rails_error_dashboard/plugin.rb +19 -3
- data/lib/rails_error_dashboard/plugin_registry.rb +61 -12
- data/lib/rails_error_dashboard/queries/analytics_stats.rb +0 -12
- data/lib/rails_error_dashboard/queries/boot_errors.rb +76 -0
- data/lib/rails_error_dashboard/queries/co_occurring_errors.rb +59 -33
- data/lib/rails_error_dashboard/queries/dashboard_stats.rb +3 -11
- data/lib/rails_error_dashboard/queries/errors_list.rb +8 -16
- data/lib/rails_error_dashboard/queries/health_status.rb +191 -0
- data/lib/rails_error_dashboard/queries/missing_translation_summary.rb +82 -0
- data/lib/rails_error_dashboard/queries/platform_comparison.rb +14 -6
- data/lib/rails_error_dashboard/services/active_storage_probe.rb +91 -0
- data/lib/rails_error_dashboard/services/backtrace_parser.rb +13 -7
- data/lib/rails_error_dashboard/services/backtrace_processor.rb +31 -7
- data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +30 -0
- data/lib/rails_error_dashboard/services/crash_capture.rb +90 -2
- data/lib/rails_error_dashboard/services/digest_builder.rb +9 -6
- data/lib/rails_error_dashboard/services/error_notification_dispatcher.rb +6 -0
- data/lib/rails_error_dashboard/services/github_link_generator.rb +25 -14
- data/lib/rails_error_dashboard/services/markdown_error_formatter.rb +15 -16
- data/lib/rails_error_dashboard/services/missing_translation_handler.rb +152 -0
- data/lib/rails_error_dashboard/services/missing_translation_tracker.rb +316 -0
- data/lib/rails_error_dashboard/services/repository_url.rb +18 -0
- data/lib/rails_error_dashboard/services/resolution_callbacks.rb +44 -0
- data/lib/rails_error_dashboard/services/severity_classifier.rb +52 -0
- data/lib/rails_error_dashboard/services/similarity_calculator.rb +3 -9
- data/lib/rails_error_dashboard/services/source_code_reader.rb +23 -3
- data/lib/rails_error_dashboard/services/storm_protection/count_buffer.rb +6 -3
- data/lib/rails_error_dashboard/services/storm_protection/gate.rb +6 -1
- data/lib/rails_error_dashboard/services/telegram_delivery.rb +134 -0
- data/lib/rails_error_dashboard/services/telegram_payload_builder.rb +105 -0
- data/lib/rails_error_dashboard/services/webhook_delivery.rb +63 -0
- data/lib/rails_error_dashboard/services/webhook_signer.rb +80 -0
- data/lib/rails_error_dashboard/value_objects/occurrence_snapshot.rb +23 -0
- data/lib/rails_error_dashboard/version.rb +1 -1
- data/lib/rails_error_dashboard.rb +28 -0
- data/lib/tasks/error_dashboard.rake +2 -3
- metadata +29 -2
data/config/locales/pl.yml
CHANGED
|
@@ -36,6 +36,8 @@ pl:
|
|
|
36
36
|
healthy: "✅ Sprawny"
|
|
37
37
|
warning: "⚠️ Ostrzeżenie"
|
|
38
38
|
critical: "\U0001F534 Krytyczny"
|
|
39
|
+
not_rated: "Bez oceny"
|
|
40
|
+
not_rated_hint: "Ocena porównuje platformy, więc potrzebne są błędy na co najmniej dwóch."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobile
|
|
41
43
|
tablet: Tablet
|
|
@@ -60,6 +62,8 @@ pl:
|
|
|
60
62
|
llm: LLM
|
|
61
63
|
n_plus_one: Zapytania N+1
|
|
62
64
|
deprecations: Deprecations
|
|
65
|
+
missing_translations: "Tłumaczenia"
|
|
66
|
+
boot_errors: "Błędy startu"
|
|
63
67
|
swallowed: Wyciszone
|
|
64
68
|
diagnostic_dumps: Diagnostyka
|
|
65
69
|
storms: Sztormy
|
|
@@ -246,6 +250,10 @@ pl:
|
|
|
246
250
|
inactive_body: włącz, aby zobaczyć wykonane linie
|
|
247
251
|
enable: Włącz
|
|
248
252
|
disable: Wyłącz
|
|
253
|
+
occurrence:
|
|
254
|
+
title: "Wystąpienie #%{id}"
|
|
255
|
+
body: "Breadcrumbs, stan systemu i zmienne pochodzą z tego wystąpienia. Pozostałe dane pokazują najnowsze przechwycenie."
|
|
256
|
+
show_latest: "Pokaż najnowsze"
|
|
249
257
|
baselines:
|
|
250
258
|
title: Statystyki poziomu bazowego
|
|
251
259
|
anomaly_label: 'Anomalia:'
|
|
@@ -518,6 +526,14 @@ pl:
|
|
|
518
526
|
few: "+%{count} więcej"
|
|
519
527
|
many: "+%{count} więcej"
|
|
520
528
|
view_errors: Zobacz błędy
|
|
529
|
+
captured_occurrences:
|
|
530
|
+
title: "Zapisane wystąpienia"
|
|
531
|
+
hint: "Breadcrumbs, stan systemu i zmienne są przechowywane dla najnowszych wystąpień (occurrence_context_limit). Otwórz jedno, aby je zobaczyć."
|
|
532
|
+
column_occurrence: "Wystąpienie"
|
|
533
|
+
column_occurred_at: "Wystąpiło"
|
|
534
|
+
column_version: "Wersja"
|
|
535
|
+
view: "Pokaż"
|
|
536
|
+
viewing: "Wyświetlane"
|
|
521
537
|
co_occurring:
|
|
522
538
|
title: Współwystępujące błędy
|
|
523
539
|
badge: Wzorce czasowe
|
|
@@ -772,6 +788,7 @@ pl:
|
|
|
772
788
|
many: "%{count} ramek"
|
|
773
789
|
click_to_expand: "(kliknij, aby rozwinąć)"
|
|
774
790
|
view_source: Zobacz kod
|
|
791
|
+
client_report_note: "Te ramki pochodzą z raportu klienta (ManualErrorReporter). Opisują kod uruchomiony po stronie klienta, więc RED nie otwiera dla nich plików źródłowych, nie pokazuje fragmentów kodu ani nie uruchamia git blame."
|
|
775
792
|
none: Backtrace niedostępny
|
|
776
793
|
row:
|
|
777
794
|
new_badge: NOWY
|
|
@@ -865,6 +882,53 @@ pl:
|
|
|
865
882
|
error_log
|
|
866
883
|
footer_tip: Wyciszone wyjątki są podnoszone, a następnie po cichu przechwytywane.
|
|
867
884
|
Mogą ukrywać prawdziwe błędy.
|
|
885
|
+
missing_translations_page:
|
|
886
|
+
title: "Brakujące tłumaczenia"
|
|
887
|
+
empty_title: "Nie zarejestrowano brakujących tłumaczeń"
|
|
888
|
+
empty_body: "W ciągu ostatnich %{days} dni nie zarejestrowano brakujących kluczy tłumaczeń."
|
|
889
|
+
how_title: "Jak śledzone są brakujące tłumaczenia:"
|
|
890
|
+
how_enabled_html: "Śledzenie musi być włączone (%{option})"
|
|
891
|
+
how_hooked: "RED opakowuje I18n.exception_handler i przekazuje wywołanie do handlera, który aplikacja już miała; nic więcej w konfiguracji I18n się nie zmienia"
|
|
892
|
+
how_recorded: "Każde wyszukanie, które trafia do handlera — zarówno z I18n.t, jak i z helpera widoku t() — jest liczone według locale i klucza, wraz z pierwszym zaobserwowanym miejscem wywołania"
|
|
893
|
+
how_not_seen: "Wyszukanie z :default nigdy nie kończy się brakiem, a wyszukanie z raise_on_missing_translations zgłasza wyjątek, zanim uruchomi się jakikolwiek handler, więc żadne z nich nie jest tu liczone"
|
|
894
|
+
how_buffered: "Braki są liczone w pamięci i zapisywane na końcu żądania lub zadania, więc mogą pojawić się z niewielkim opóźnieniem"
|
|
895
|
+
missing_keys: "Brakujące klucze"
|
|
896
|
+
total_misses: "Łącznie braków"
|
|
897
|
+
locales_affected: "Dotknięte locale"
|
|
898
|
+
all_title: "Brakujące klucze tłumaczeń"
|
|
899
|
+
column_key: "Klucz"
|
|
900
|
+
column_locale: "Locale"
|
|
901
|
+
column_source: "Pierwszy raz w"
|
|
902
|
+
column_misses: "Braki"
|
|
903
|
+
column_first_seen: "Pierwsze wystąpienie"
|
|
904
|
+
overflow_notice: "%{count} braków nie udało się przypisać do klucza, ponieważ bufor trackera (%{limit} kluczy na wątek) był pełny."
|
|
905
|
+
footer_tip: "Dodaj klucz do pliku locale albo przekaż :default. Klucze, na które użytkownicy faktycznie trafili, są wymienione jako pierwsze."
|
|
906
|
+
docs: "Przewodnik i18n Rails"
|
|
907
|
+
|
|
908
|
+
boot_errors_page:
|
|
909
|
+
title: "Błędy startu"
|
|
910
|
+
empty_title: "Nie zarejestrowano błędów startu"
|
|
911
|
+
empty_body: "W ciągu ostatnich %{days} dni żaden proces nie zginął podczas startu."
|
|
912
|
+
how_title: "Jak przechwytywane są błędy startu:"
|
|
913
|
+
how_enabled_html: "Przechwytywanie awarii musi być włączone (%{option})"
|
|
914
|
+
how_hooked: "RED rejestruje swój hook at_exit zaraz po Twoich initializerach i przed eager loadingiem Rails, więc awaria podczas startu jest widziana, mimo że aplikacja nigdy nie wystartowała do końca"
|
|
915
|
+
how_captured_html: "%{zeitwerk} z pliku definiującego niewłaściwą stałą, %{syntax} w modelu, initializer zgłaszający wyjątek: wszystko, co zabija proces, zanim obsłuży żądanie"
|
|
916
|
+
how_imported: "Awaria jest zapisywana na dysk, bo bazy danych jeszcze nie ma, i importowana przy następnym udanym starcie"
|
|
917
|
+
how_never: "Procesu zabitego przez SIGKILL lub segfault at_exit nigdy nie zobaczy, w żadnym narzędziu"
|
|
918
|
+
unresolved: "Nierozwiązane"
|
|
919
|
+
boot_crashes: "Awarie startu"
|
|
920
|
+
failed_boots: "Nieudane starty"
|
|
921
|
+
all_title: "Awarie startu według błędu"
|
|
922
|
+
column_error: "Błąd"
|
|
923
|
+
column_file: "Plik"
|
|
924
|
+
column_constant: "Stała"
|
|
925
|
+
column_boots: "Starty"
|
|
926
|
+
column_first_seen: "Pierwsze wystąpienie"
|
|
927
|
+
column_status: "Status"
|
|
928
|
+
status_open: "Otwarty"
|
|
929
|
+
status_resolved: "Rozwiązany"
|
|
930
|
+
footer_tip: "Awaria startu oznacza, że proces nigdy nie obsłużył żądania. Napraw ją przed następnym wdrożeniem; wiersz rozwiązuje się jak każdy inny błąd."
|
|
931
|
+
|
|
868
932
|
rack_attack_page:
|
|
869
933
|
title: Zdarzenia limitu żądań
|
|
870
934
|
missing_title: Rack Attack nie jest zainstalowany
|
|
@@ -1105,6 +1169,11 @@ pl:
|
|
|
1105
1169
|
other: "%{count} zdarzenia"
|
|
1106
1170
|
few: "%{count} zdarzenia"
|
|
1107
1171
|
many: "%{count} zdarzeń"
|
|
1172
|
+
occurrences:
|
|
1173
|
+
one: "%{count} wystąpienie"
|
|
1174
|
+
other: "%{count} wystąpienia"
|
|
1175
|
+
few: "%{count} wystąpienia"
|
|
1176
|
+
many: "%{count} wystąpień"
|
|
1108
1177
|
queries:
|
|
1109
1178
|
one: "%{count} zapytanie"
|
|
1110
1179
|
other: "%{count} zapytania"
|
|
@@ -1150,7 +1219,7 @@ pl:
|
|
|
1150
1219
|
unable_to_detect: Nie udało się wykryć
|
|
1151
1220
|
no_user_model: Nie wykryto modelu User
|
|
1152
1221
|
unable_to_query_count: Nie udało się odczytać liczby
|
|
1153
|
-
|
|
1222
|
+
retention_enforced_by_job: "Usuwane przez RetentionCleanupJob, gdy uruchomi go Twój harmonogram"
|
|
1154
1223
|
keep_forever: Przechowuj bezterminowo
|
|
1155
1224
|
no_automatic_deletion: Bez automatycznego usuwania
|
|
1156
1225
|
run_command: 'Uruchom:'
|
|
@@ -1158,8 +1227,8 @@ pl:
|
|
|
1158
1227
|
options:
|
|
1159
1228
|
enable_middleware: Przechwytuje nieobsłużone wyjątki
|
|
1160
1229
|
enable_error_subscriber: Subskrybuje zdarzenia błędów Rails
|
|
1161
|
-
retention_days:
|
|
1162
|
-
|
|
1230
|
+
retention_days: "Usuwaj błędy niewidziane przez tyle dni. Wykonuje to RetentionCleanupJob, którego gem sam nie planuje"
|
|
1231
|
+
occurrence_context_limit: "Ile najnowszych wystąpień każdego błędu zachowuje breadcrumbs, stan systemu i zmienne (0 = wyłączone)"
|
|
1163
1232
|
max_backtrace_lines: Limit głębokości śladu stosu
|
|
1164
1233
|
sampling_rate: Odsetek przechwytywanych błędów
|
|
1165
1234
|
application_name: Nazwa tej aplikacji (wykrywana automatycznie, jeśli nie
|
|
@@ -1178,7 +1247,7 @@ pl:
|
|
|
1178
1247
|
nie ustawiono)
|
|
1179
1248
|
async_logging: Przetwarzanie w zadaniach w tle
|
|
1180
1249
|
async_adapter: Adapter kolejki zadań
|
|
1181
|
-
enable_rate_limiting:
|
|
1250
|
+
enable_rate_limiting: "Ograniczaj żądania do panelu według IP i ścieżki"
|
|
1182
1251
|
rate_limit_per_minute: Żądań na minutę z jednego IP
|
|
1183
1252
|
enable_slack_notifications: Powiadomienia w czasie rzeczywistym
|
|
1184
1253
|
slack_webhook_url: Punkt końcowy webhooka Slack
|
|
@@ -1187,10 +1256,15 @@ pl:
|
|
|
1187
1256
|
notification_email_from: Adres nadawcy
|
|
1188
1257
|
enable_discord_notifications: Powiadomienia przez webhook Discord
|
|
1189
1258
|
discord_webhook_url: Punkt końcowy webhooka Discord
|
|
1259
|
+
enable_telegram_notifications: "Powiadomienia Telegram przez Bot API"
|
|
1260
|
+
telegram_bot_token: "Token bota z @BotFather (ustaw zmienną środowiskową TELEGRAM_BOT_TOKEN)"
|
|
1261
|
+
telegram_chat_id: "Czat, grupa lub kanał, do którego pisze bot"
|
|
1262
|
+
telegram_api_base_url: "Serwer Bot API (zmieniaj tylko dla proxy lub własnego serwera)"
|
|
1190
1263
|
enable_pagerduty_notifications: Eskalacja błędów krytycznych
|
|
1191
1264
|
pagerduty_integration_key: Klucz API PagerDuty
|
|
1192
1265
|
enable_webhook_notifications: Dowolne punkty końcowe webhooków
|
|
1193
1266
|
webhook_urls: Własne punkty końcowe webhooków
|
|
1267
|
+
webhook_signing_secret: Podpisuje wychodzące webhooki algorytmem HMAC-SHA256 (ustaw zmienną środowiskową WEBHOOK_SIGNING_SECRET)
|
|
1194
1268
|
enable_scheduled_digests: Dzienne/tygodniowe e-maile podsumowujące. Planuj
|
|
1195
1269
|
przez SolidQueue, Sidekiq lub cron
|
|
1196
1270
|
digest_frequency: Jak często wysyłać e-maile podsumowujące
|
|
@@ -1210,7 +1284,7 @@ pl:
|
|
|
1210
1284
|
source_code_context_lines: Linie przed i po linii docelowej
|
|
1211
1285
|
enable_git_blame: Pokazuj informacje git blame
|
|
1212
1286
|
source_code_cache_ttl: Czas buforowania kodu źródłowego
|
|
1213
|
-
only_show_app_code_source: Ukryj
|
|
1287
|
+
only_show_app_code_source: "Ukryj kod gemów i vendor w podglądzie źródeł"
|
|
1214
1288
|
git_branch_strategy: Strategia ustalania gałęzi
|
|
1215
1289
|
enable_breadcrumbs: Przechwytuj ślad aktywności żądania
|
|
1216
1290
|
breadcrumb_buffer_size: Maksymalna liczba breadcrumbs na żądanie
|
|
@@ -1242,6 +1316,7 @@ pl:
|
|
|
1242
1316
|
enable_crash_capture: Hak at_exit dla nieobsłużonych awarii
|
|
1243
1317
|
enable_coverage_tracking: Tryb diagnostyczny — włącz w panelu, aby widzieć
|
|
1244
1318
|
wykonane linie w podglądzie kodu (Ruby 3.2+)
|
|
1319
|
+
enable_missing_translation_tracking: "Zlicza braki I18n aplikacji według locale i klucza (opakowuje I18n.exception_handler)"
|
|
1245
1320
|
enable_rack_attack_tracking: Zapisuj zdarzenia throttle/blocklist w osobnej
|
|
1246
1321
|
tabeli
|
|
1247
1322
|
enable_actioncable_tracking: Śledź zdarzenia kanałów WebSocket jako breadcrumbs
|
|
@@ -1301,6 +1376,8 @@ pl:
|
|
|
1301
1376
|
breadcrumbs: Breadcrumbs
|
|
1302
1377
|
system_health: Stan systemu
|
|
1303
1378
|
swallowed_exceptions: Wykrywanie wyciszonych wyjątków
|
|
1379
|
+
missing_translations: "Śledzenie brakujących tłumaczeń"
|
|
1380
|
+
boot_errors: "Przechwytywanie błędów startu"
|
|
1304
1381
|
rack_attack: Śledzenie Rack Attack
|
|
1305
1382
|
actioncable: Śledzenie ActionCable
|
|
1306
1383
|
activestorage: Śledzenie ActiveStorage
|
|
@@ -1713,6 +1790,13 @@ pl:
|
|
|
1713
1790
|
guide_link: Przewodnik po ActionCable
|
|
1714
1791
|
activestorage:
|
|
1715
1792
|
title: Stan ActiveStorage
|
|
1793
|
+
probe:
|
|
1794
|
+
title: "Osiągalność usługi"
|
|
1795
|
+
reachable: "Osiągalna"
|
|
1796
|
+
unreachable: "Nieosiągalna"
|
|
1797
|
+
service: "Usługa: %{name}"
|
|
1798
|
+
latency: "%{ms} ms w obie strony"
|
|
1799
|
+
how: "Jedno sprawdzenie istnienia klucza, który nigdy nie jest zapisywany, wykonywane przy ładowaniu tej strony. GET /health wykonuje tę samą sondę."
|
|
1716
1800
|
empty:
|
|
1717
1801
|
title: Nie znaleziono zdarzeń ActiveStorage
|
|
1718
1802
|
message: W ciągu ostatnich %{days} dni nie wykryto operacji usług ActiveStorage
|
data/config/locales/pt-BR.yml
CHANGED
|
@@ -36,6 +36,8 @@ pt-BR:
|
|
|
36
36
|
healthy: "✅ Saudável"
|
|
37
37
|
warning: "⚠️ Atenção"
|
|
38
38
|
critical: "\U0001F534 Crítico"
|
|
39
|
+
not_rated: "Sem avaliação"
|
|
40
|
+
not_rated_hint: "A avaliação compara plataformas, então precisa de erros em pelo menos duas."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Celular
|
|
41
43
|
tablet: Tablet
|
|
@@ -60,6 +62,8 @@ pt-BR:
|
|
|
60
62
|
llm: LLM
|
|
61
63
|
n_plus_one: Consultas N+1
|
|
62
64
|
deprecations: Deprecations
|
|
65
|
+
missing_translations: "Traduções"
|
|
66
|
+
boot_errors: "Erros de inicialização"
|
|
63
67
|
swallowed: Engolidas
|
|
64
68
|
diagnostic_dumps: Diagnóstico
|
|
65
69
|
storms: Tempestades
|
|
@@ -245,6 +249,10 @@ pt-BR:
|
|
|
245
249
|
inactive_body: ative para ver as linhas executadas
|
|
246
250
|
enable: Ativar
|
|
247
251
|
disable: Desativar
|
|
252
|
+
occurrence:
|
|
253
|
+
title: "Ocorrência #%{id}"
|
|
254
|
+
body: "Breadcrumbs, saúde do sistema e variáveis vêm desta ocorrência. Todo o resto mostra a captura mais recente."
|
|
255
|
+
show_latest: "Ver a mais recente"
|
|
248
256
|
baselines:
|
|
249
257
|
title: Estatísticas de referência
|
|
250
258
|
anomaly_label: 'Anomalia:'
|
|
@@ -517,6 +525,14 @@ pt-BR:
|
|
|
517
525
|
other: "+%{count} outros"
|
|
518
526
|
many: "+%{count} outros"
|
|
519
527
|
view_errors: Ver os erros
|
|
528
|
+
captured_occurrences:
|
|
529
|
+
title: "Ocorrências capturadas"
|
|
530
|
+
hint: "Breadcrumbs, saúde do sistema e variáveis são mantidos para as ocorrências mais recentes (occurrence_context_limit). Abra uma para vê-los."
|
|
531
|
+
column_occurrence: "Ocorrência"
|
|
532
|
+
column_occurred_at: "Ocorreu em"
|
|
533
|
+
column_version: "Versão"
|
|
534
|
+
view: "Ver"
|
|
535
|
+
viewing: "Em exibição"
|
|
520
536
|
co_occurring:
|
|
521
537
|
title: Erros concomitantes
|
|
522
538
|
badge: Padrões temporais
|
|
@@ -765,6 +781,7 @@ pt-BR:
|
|
|
765
781
|
many: "%{count} frames"
|
|
766
782
|
click_to_expand: "(clique para expandir)"
|
|
767
783
|
view_source: Ver o código-fonte
|
|
784
|
+
client_report_note: "Estes frames vieram de um relatório do cliente (ManualErrorReporter). Eles descrevem código executado no cliente, por isso o RED não abre arquivos-fonte, não mostra trechos nem executa git blame para eles."
|
|
768
785
|
none: Nenhum backtrace disponível
|
|
769
786
|
row:
|
|
770
787
|
new_badge: NOVO
|
|
@@ -855,6 +872,53 @@ pt-BR:
|
|
|
855
872
|
view_unrescued: Ver os erros %{exception} não tratados que chegaram ao error_log
|
|
856
873
|
footer_tip: As exceções engolidas são levantadas e depois tratadas em silêncio.
|
|
857
874
|
Elas podem esconder bugs reais.
|
|
875
|
+
missing_translations_page:
|
|
876
|
+
title: "Traduções ausentes"
|
|
877
|
+
empty_title: "Nenhuma tradução ausente registrada"
|
|
878
|
+
empty_body: "Nenhuma chave de tradução ausente foi registrada nos últimos %{days} dias."
|
|
879
|
+
how_title: "Como as traduções ausentes são rastreadas:"
|
|
880
|
+
how_enabled_html: "O rastreamento precisa estar ativado (%{option})"
|
|
881
|
+
how_hooked: "O RED envolve o I18n.exception_handler e delega ao handler que sua aplicação já tinha; nada mais muda na sua configuração do I18n"
|
|
882
|
+
how_recorded: "Toda busca que chega ao handler — tanto por I18n.t quanto pelo helper de view t() — é contada por locale e chave, junto com o primeiro ponto de chamada observado"
|
|
883
|
+
how_not_seen: "Uma busca com :default nunca falha, e uma feita com raise_on_missing_translations lança uma exceção antes de qualquer handler rodar, então nenhuma das duas é contada aqui"
|
|
884
|
+
how_buffered: "As falhas são contadas em memória e gravadas ao fim da requisição ou do job, então espere um pequeno atraso até aparecerem"
|
|
885
|
+
missing_keys: "Chaves ausentes"
|
|
886
|
+
total_misses: "Total de falhas"
|
|
887
|
+
locales_affected: "Locales afetados"
|
|
888
|
+
all_title: "Chaves de tradução ausentes"
|
|
889
|
+
column_key: "Chave"
|
|
890
|
+
column_locale: "Locale"
|
|
891
|
+
column_source: "Visto primeiro em"
|
|
892
|
+
column_misses: "Falhas"
|
|
893
|
+
column_first_seen: "Primeira ocorrência"
|
|
894
|
+
overflow_notice: "%{count} falhas não puderam ser atribuídas a uma chave porque o buffer do rastreador (%{limit} chaves por thread) estava cheio."
|
|
895
|
+
footer_tip: "Adicione a chave ao arquivo de locale ou passe um :default. As chaves que os usuários realmente encontraram aparecem primeiro."
|
|
896
|
+
docs: "Guia i18n do Rails"
|
|
897
|
+
|
|
898
|
+
boot_errors_page:
|
|
899
|
+
title: "Erros de inicialização"
|
|
900
|
+
empty_title: "Nenhum erro de inicialização registrado"
|
|
901
|
+
empty_body: "Nenhum processo morreu ao iniciar nos últimos %{days} dias."
|
|
902
|
+
how_title: "Como os erros de inicialização são capturados:"
|
|
903
|
+
how_enabled_html: "A captura de falhas precisa estar ativada (%{option})"
|
|
904
|
+
how_hooked: "O RED registra seu hook at_exit logo após seus initializers e antes do eager loading do Rails, então uma falha durante a inicialização é vista mesmo que o app nunca termine de subir"
|
|
905
|
+
how_captured_html: "Um %{zeitwerk} de um arquivo que define a constante errada, um %{syntax} em um model, um initializer que lançou exceção: qualquer coisa que mate o processo antes de atender uma requisição"
|
|
906
|
+
how_imported: "A falha é gravada em disco, porque ainda não há banco de dados, e importada na próxima inicialização bem-sucedida"
|
|
907
|
+
how_never: "Um processo morto por SIGKILL ou por um segfault nunca é visto pelo at_exit, em nenhuma ferramenta"
|
|
908
|
+
unresolved: "Não resolvidos"
|
|
909
|
+
boot_crashes: "Falhas de inicialização"
|
|
910
|
+
failed_boots: "Inicializações com falha"
|
|
911
|
+
all_title: "Falhas de inicialização por erro"
|
|
912
|
+
column_error: "Erro"
|
|
913
|
+
column_file: "Arquivo"
|
|
914
|
+
column_constant: "Constante"
|
|
915
|
+
column_boots: "Inicializações"
|
|
916
|
+
column_first_seen: "Primeira ocorrência"
|
|
917
|
+
column_status: "Status"
|
|
918
|
+
status_open: "Aberto"
|
|
919
|
+
status_resolved: "Resolvido"
|
|
920
|
+
footer_tip: "Uma falha de inicialização significa que o processo nunca atendeu uma requisição. Corrija antes do próximo deploy; a linha é resolvida como qualquer outro erro."
|
|
921
|
+
|
|
858
922
|
rack_attack_page:
|
|
859
923
|
title: Eventos de limite de taxa
|
|
860
924
|
missing_title: O Rack Attack não está instalado
|
|
@@ -1084,6 +1148,10 @@ pt-BR:
|
|
|
1084
1148
|
one: "%{count} evento"
|
|
1085
1149
|
other: "%{count} eventos"
|
|
1086
1150
|
many: "%{count} eventos"
|
|
1151
|
+
occurrences:
|
|
1152
|
+
one: "%{count} ocorrência"
|
|
1153
|
+
other: "%{count} ocorrências"
|
|
1154
|
+
many: "%{count} ocorrências"
|
|
1087
1155
|
queries:
|
|
1088
1156
|
one: "%{count} consulta"
|
|
1089
1157
|
other: "%{count} consultas"
|
|
@@ -1124,7 +1192,7 @@ pt-BR:
|
|
|
1124
1192
|
unable_to_detect: Não foi possível detectar
|
|
1125
1193
|
no_user_model: Nenhum modelo User detectado
|
|
1126
1194
|
unable_to_query_count: Não foi possível consultar a quantidade
|
|
1127
|
-
|
|
1195
|
+
retention_enforced_by_job: "Excluídos pelo RetentionCleanupJob quando seu agendador o executar"
|
|
1128
1196
|
keep_forever: Manter para sempre
|
|
1129
1197
|
no_automatic_deletion: Sem exclusão automática
|
|
1130
1198
|
run_command: 'Executar:'
|
|
@@ -1132,8 +1200,8 @@ pt-BR:
|
|
|
1132
1200
|
options:
|
|
1133
1201
|
enable_middleware: Captura exceções não tratadas
|
|
1134
1202
|
enable_error_subscriber: Assina os eventos de erro do Rails
|
|
1135
|
-
retention_days:
|
|
1136
|
-
|
|
1203
|
+
retention_days: "Excluir erros não vistos há este número de dias. Aplicado pelo RetentionCleanupJob, que a gem não agenda por conta própria"
|
|
1204
|
+
occurrence_context_limit: "Quantas ocorrências recentes por erro mantêm breadcrumbs, saúde do sistema e variáveis (0 = desativado)"
|
|
1137
1205
|
max_backtrace_lines: Profundidade máxima do backtrace
|
|
1138
1206
|
sampling_rate: Porcentagem de erros capturados
|
|
1139
1207
|
application_name: Nome desta aplicação (detectado automaticamente se não for
|
|
@@ -1151,7 +1219,7 @@ pt-BR:
|
|
|
1151
1219
|
se não for definido)
|
|
1152
1220
|
async_logging: Processamento por jobs em segundo plano
|
|
1153
1221
|
async_adapter: Adaptador da fila de jobs
|
|
1154
|
-
enable_rate_limiting: Limitar as requisições
|
|
1222
|
+
enable_rate_limiting: "Limitar as requisições do painel por IP e caminho"
|
|
1155
1223
|
rate_limit_per_minute: Requisições por minuto e por IP
|
|
1156
1224
|
enable_slack_notifications: Notificações em tempo real
|
|
1157
1225
|
slack_webhook_url: Endpoint do webhook do Slack
|
|
@@ -1160,10 +1228,15 @@ pt-BR:
|
|
|
1160
1228
|
notification_email_from: Endereço do remetente
|
|
1161
1229
|
enable_discord_notifications: Notificações por webhook do Discord
|
|
1162
1230
|
discord_webhook_url: Endpoint do webhook do Discord
|
|
1231
|
+
enable_telegram_notifications: "Notificações do Telegram via Bot API"
|
|
1232
|
+
telegram_bot_token: "Token do bot do @BotFather (defina a variável de ambiente TELEGRAM_BOT_TOKEN)"
|
|
1233
|
+
telegram_chat_id: "Chat, grupo ou canal em que o bot publica"
|
|
1234
|
+
telegram_api_base_url: "Servidor da Bot API (altere apenas para um proxy ou servidor próprio)"
|
|
1163
1235
|
enable_pagerduty_notifications: Escalonamento de erros críticos
|
|
1164
1236
|
pagerduty_integration_key: Chave de API do PagerDuty
|
|
1165
1237
|
enable_webhook_notifications: Endpoints de webhook genéricos
|
|
1166
1238
|
webhook_urls: Endpoints de webhook personalizados
|
|
1239
|
+
webhook_signing_secret: Assina os webhooks de saída com HMAC-SHA256 (defina a variável de ambiente WEBHOOK_SIGNING_SECRET)
|
|
1167
1240
|
enable_scheduled_digests: E-mails de resumo diários/semanais. Agendamento
|
|
1168
1241
|
via SolidQueue, Sidekiq ou cron
|
|
1169
1242
|
digest_frequency: Com que frequência enviar os e-mails de resumo
|
|
@@ -1183,7 +1256,7 @@ pt-BR:
|
|
|
1183
1256
|
source_code_context_lines: Linhas antes e depois da linha de destino
|
|
1184
1257
|
enable_git_blame: Exibir as informações do git blame
|
|
1185
1258
|
source_code_cache_ttl: Duração do cache do código-fonte
|
|
1186
|
-
only_show_app_code_source: Ocultar gems e
|
|
1259
|
+
only_show_app_code_source: "Ocultar código de gems e vendor no visualizador de código"
|
|
1187
1260
|
git_branch_strategy: Estratégia de resolução do branch
|
|
1188
1261
|
enable_breadcrumbs: Capturar o rastro de atividade da requisição
|
|
1189
1262
|
breadcrumb_buffer_size: Número máximo de breadcrumbs por requisição
|
|
@@ -1215,6 +1288,7 @@ pt-BR:
|
|
|
1215
1288
|
enable_crash_capture: Hook at_exit para falhas não tratadas
|
|
1216
1289
|
enable_coverage_tracking: Modo diagnóstico — ative pelo painel para ver as
|
|
1217
1290
|
linhas executadas na visualização do código-fonte (Ruby 3.2+)
|
|
1291
|
+
enable_missing_translation_tracking: "Conta as falhas de I18n do app por locale e chave (envolve o I18n.exception_handler)"
|
|
1218
1292
|
enable_rack_attack_tracking: Registrar os eventos throttle/blocklist em uma
|
|
1219
1293
|
tabela própria
|
|
1220
1294
|
enable_actioncable_tracking: Monitorar os eventos de canal do WebSocket como
|
|
@@ -1272,6 +1346,8 @@ pt-BR:
|
|
|
1272
1346
|
breadcrumbs: Breadcrumbs
|
|
1273
1347
|
system_health: Saúde do sistema
|
|
1274
1348
|
swallowed_exceptions: Detecção de exceções engolidas
|
|
1349
|
+
missing_translations: "Rastreamento de traduções ausentes"
|
|
1350
|
+
boot_errors: "Captura de erros de inicialização"
|
|
1275
1351
|
rack_attack: Monitoramento do Rack Attack
|
|
1276
1352
|
actioncable: Monitoramento do ActionCable
|
|
1277
1353
|
activestorage: Monitoramento do ActiveStorage
|
|
@@ -1680,6 +1756,13 @@ pt-BR:
|
|
|
1680
1756
|
guide_link: Guia do ActionCable
|
|
1681
1757
|
activestorage:
|
|
1682
1758
|
title: Saúde do ActiveStorage
|
|
1759
|
+
probe:
|
|
1760
|
+
title: "Alcançabilidade do serviço"
|
|
1761
|
+
reachable: "Alcançável"
|
|
1762
|
+
unreachable: "Inalcançável"
|
|
1763
|
+
service: "Serviço: %{name}"
|
|
1764
|
+
latency: "%{ms} ms de ida e volta"
|
|
1765
|
+
how: "Uma verificação de existência de uma chave que nunca é armazenada, feita ao carregar esta página. GET /health executa a mesma sonda."
|
|
1683
1766
|
empty:
|
|
1684
1767
|
title: Nenhum evento do ActiveStorage encontrado
|
|
1685
1768
|
message: Nenhuma operação do serviço ActiveStorage foi detectada nos breadcrumbs
|
data/config/locales/ru.yml
CHANGED
|
@@ -36,6 +36,8 @@ ru:
|
|
|
36
36
|
healthy: "✅ В норме"
|
|
37
37
|
warning: "⚠️ Предупреждение"
|
|
38
38
|
critical: "\U0001F534 Критично"
|
|
39
|
+
not_rated: "Без оценки"
|
|
40
|
+
not_rated_hint: "Оценка сравнивает платформы, поэтому нужны ошибки как минимум на двух."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Мобильное
|
|
41
43
|
tablet: Планшет
|
|
@@ -60,6 +62,8 @@ ru:
|
|
|
60
62
|
llm: LLM
|
|
61
63
|
n_plus_one: N+1 запросы
|
|
62
64
|
deprecations: Устаревшее
|
|
65
|
+
missing_translations: "Переводы"
|
|
66
|
+
boot_errors: "Ошибки запуска"
|
|
63
67
|
swallowed: Подавленные
|
|
64
68
|
diagnostic_dumps: Диагностика
|
|
65
69
|
storms: Штормы
|
|
@@ -246,6 +250,10 @@ ru:
|
|
|
246
250
|
inactive_body: включите, чтобы видеть выполненные строки
|
|
247
251
|
enable: Включить
|
|
248
252
|
disable: Отключить
|
|
253
|
+
occurrence:
|
|
254
|
+
title: "Событие #%{id}"
|
|
255
|
+
body: "Breadcrumbs, состояние системы и переменные относятся к этому событию. Всё остальное показывает последний захват."
|
|
256
|
+
show_latest: "Показать последнее"
|
|
249
257
|
baselines:
|
|
250
258
|
title: Статистика базовой линии
|
|
251
259
|
anomaly_label: 'Аномалия:'
|
|
@@ -521,6 +529,14 @@ ru:
|
|
|
521
529
|
few: "+ ещё %{count}"
|
|
522
530
|
many: "+ ещё %{count}"
|
|
523
531
|
view_errors: Смотреть ошибки
|
|
532
|
+
captured_occurrences:
|
|
533
|
+
title: "Сохранённые события"
|
|
534
|
+
hint: "Breadcrumbs, состояние системы и переменные хранятся для последних событий (occurrence_context_limit). Откройте событие, чтобы их увидеть."
|
|
535
|
+
column_occurrence: "Событие"
|
|
536
|
+
column_occurred_at: "Время"
|
|
537
|
+
column_version: "Версия"
|
|
538
|
+
view: "Открыть"
|
|
539
|
+
viewing: "Открыто"
|
|
524
540
|
co_occurring:
|
|
525
541
|
title: Сопутствующие ошибки
|
|
526
542
|
badge: Временные закономерности
|
|
@@ -775,6 +791,7 @@ ru:
|
|
|
775
791
|
many: "%{count} кадров"
|
|
776
792
|
click_to_expand: "(нажмите, чтобы развернуть)"
|
|
777
793
|
view_source: Смотреть исходный код
|
|
794
|
+
client_report_note: "Эти фреймы пришли из отчёта клиента (ManualErrorReporter). Они описывают код, выполнявшийся на клиенте, поэтому RED не открывает для них исходные файлы, не показывает фрагменты и не запускает git blame."
|
|
778
795
|
none: Backtrace недоступен
|
|
779
796
|
row:
|
|
780
797
|
new_badge: НОВАЯ
|
|
@@ -868,6 +885,53 @@ ru:
|
|
|
868
885
|
error_log
|
|
869
886
|
footer_tip: Подавленные исключения возбуждаются, а затем молча перехватываются.
|
|
870
887
|
Они могут скрывать настоящие ошибки.
|
|
888
|
+
missing_translations_page:
|
|
889
|
+
title: "Отсутствующие переводы"
|
|
890
|
+
empty_title: "Отсутствующие переводы не зафиксированы"
|
|
891
|
+
empty_body: "За последние %{days} дн. отсутствующие ключи перевода не зафиксированы."
|
|
892
|
+
how_title: "Как отслеживаются отсутствующие переводы:"
|
|
893
|
+
how_enabled_html: "Отслеживание должно быть включено (%{option})"
|
|
894
|
+
how_hooked: "RED оборачивает I18n.exception_handler и передаёт вызов обработчику, который уже был в приложении; больше ничего в настройках I18n не меняется"
|
|
895
|
+
how_recorded: "Каждый запрос, дошедший до обработчика — как через I18n.t, так и через хелпер t() во view — считается по локали и ключу вместе с первым замеченным местом вызова"
|
|
896
|
+
how_not_seen: "Запрос с :default никогда не даёт промаха, а запрос с raise_on_missing_translations выбрасывает исключение до вызова любого обработчика, поэтому здесь не учитываются ни тот, ни другой"
|
|
897
|
+
how_buffered: "Промахи считаются в памяти и записываются в конце запроса или задания, так что они появятся с небольшой задержкой"
|
|
898
|
+
missing_keys: "Отсутствующие ключи"
|
|
899
|
+
total_misses: "Всего промахов"
|
|
900
|
+
locales_affected: "Затронутые локали"
|
|
901
|
+
all_title: "Отсутствующие ключи перевода"
|
|
902
|
+
column_key: "Ключ"
|
|
903
|
+
column_locale: "Локаль"
|
|
904
|
+
column_source: "Впервые замечен в"
|
|
905
|
+
column_misses: "Промахи"
|
|
906
|
+
column_first_seen: "Впервые замечен"
|
|
907
|
+
overflow_notice: "%{count} промахов не удалось отнести к ключу: буфер трекера (%{limit} ключей на поток) был заполнен."
|
|
908
|
+
footer_tip: "Добавьте ключ в файл локали или передайте :default. Ключи, на которые действительно наткнулись пользователи, идут первыми."
|
|
909
|
+
docs: "Руководство Rails по i18n"
|
|
910
|
+
|
|
911
|
+
boot_errors_page:
|
|
912
|
+
title: "Ошибки запуска"
|
|
913
|
+
empty_title: "Ошибки запуска не зафиксированы"
|
|
914
|
+
empty_body: "За последние %{days} дн. ни один процесс не упал при запуске."
|
|
915
|
+
how_title: "Как перехватываются ошибки запуска:"
|
|
916
|
+
how_enabled_html: "Перехват аварий должен быть включён (%{option})"
|
|
917
|
+
how_hooked: "RED регистрирует свой хук at_exit сразу после ваших инициализаторов и до eager loading в Rails, поэтому авария при запуске видна, даже если приложение так и не запустилось"
|
|
918
|
+
how_captured_html: "%{zeitwerk} из файла, определяющего не ту константу, %{syntax} в модели, инициализатор с исключением: всё, что убивает процесс до обработки первого запроса"
|
|
919
|
+
how_imported: "Авария записывается на диск, потому что базы данных ещё нет, и импортируется при следующем успешном запуске"
|
|
920
|
+
how_never: "Процесс, убитый SIGKILL или упавший с segfault, at_exit не увидит ни в одном инструменте"
|
|
921
|
+
unresolved: "Нерешённые"
|
|
922
|
+
boot_crashes: "Аварии при запуске"
|
|
923
|
+
failed_boots: "Неудачные запуски"
|
|
924
|
+
all_title: "Аварии при запуске по ошибке"
|
|
925
|
+
column_error: "Ошибка"
|
|
926
|
+
column_file: "Файл"
|
|
927
|
+
column_constant: "Константа"
|
|
928
|
+
column_boots: "Запуски"
|
|
929
|
+
column_first_seen: "Впервые замечена"
|
|
930
|
+
column_status: "Статус"
|
|
931
|
+
status_open: "Открыта"
|
|
932
|
+
status_resolved: "Решена"
|
|
933
|
+
footer_tip: "Авария при запуске означает, что процесс не обработал ни одного запроса. Исправьте её до следующего деплоя; строка закрывается как любая другая ошибка."
|
|
934
|
+
|
|
871
935
|
rack_attack_page:
|
|
872
936
|
title: События ограничения частоты
|
|
873
937
|
missing_title: Rack Attack не установлен
|
|
@@ -1108,6 +1172,11 @@ ru:
|
|
|
1108
1172
|
other: "%{count} события"
|
|
1109
1173
|
few: "%{count} события"
|
|
1110
1174
|
many: "%{count} событий"
|
|
1175
|
+
occurrences:
|
|
1176
|
+
one: "%{count} событие"
|
|
1177
|
+
other: "%{count} события"
|
|
1178
|
+
few: "%{count} события"
|
|
1179
|
+
many: "%{count} событий"
|
|
1111
1180
|
queries:
|
|
1112
1181
|
one: "%{count} запрос"
|
|
1113
1182
|
other: "%{count} запроса"
|
|
@@ -1153,7 +1222,7 @@ ru:
|
|
|
1153
1222
|
unable_to_detect: Не удалось определить
|
|
1154
1223
|
no_user_model: Модель User не обнаружена
|
|
1155
1224
|
unable_to_query_count: Не удалось получить количество
|
|
1156
|
-
|
|
1225
|
+
retention_enforced_by_job: "Удаляются RetentionCleanupJob, когда его запускает ваш планировщик"
|
|
1157
1226
|
keep_forever: Хранить всегда
|
|
1158
1227
|
no_automatic_deletion: Автоматическое удаление отключено
|
|
1159
1228
|
run_command: 'Выполните:'
|
|
@@ -1161,8 +1230,8 @@ ru:
|
|
|
1161
1230
|
options:
|
|
1162
1231
|
enable_middleware: Перехватывает необработанные исключения
|
|
1163
1232
|
enable_error_subscriber: Подписывается на события ошибок Rails
|
|
1164
|
-
retention_days:
|
|
1165
|
-
|
|
1233
|
+
retention_days: "Удалять ошибки, не встречавшиеся столько дней. Выполняет RetentionCleanupJob, который гем сам не планирует"
|
|
1234
|
+
occurrence_context_limit: "Сколько последних событий каждой ошибки сохраняют breadcrumbs, состояние системы и переменные (0 = выключено)"
|
|
1166
1235
|
max_backtrace_lines: Ограничение глубины backtrace
|
|
1167
1236
|
sampling_rate: Доля захватываемых ошибок
|
|
1168
1237
|
application_name: Имя этого приложения (определяется автоматически, если не
|
|
@@ -1180,7 +1249,7 @@ ru:
|
|
|
1180
1249
|
если не задано)
|
|
1181
1250
|
async_logging: Обработка в фоновых задачах
|
|
1182
1251
|
async_adapter: Адаптер очереди задач
|
|
1183
|
-
enable_rate_limiting: Ограничивать
|
|
1252
|
+
enable_rate_limiting: "Ограничивать запросы к панели по IP и пути"
|
|
1184
1253
|
rate_limit_per_minute: Запросов в минуту на IP
|
|
1185
1254
|
enable_slack_notifications: Уведомления в реальном времени
|
|
1186
1255
|
slack_webhook_url: Адрес webhook Slack
|
|
@@ -1189,10 +1258,15 @@ ru:
|
|
|
1189
1258
|
notification_email_from: Адрес отправителя
|
|
1190
1259
|
enable_discord_notifications: Уведомления через webhook Discord
|
|
1191
1260
|
discord_webhook_url: Адрес webhook Discord
|
|
1261
|
+
enable_telegram_notifications: "Уведомления Telegram через Bot API"
|
|
1262
|
+
telegram_bot_token: "Токен бота от @BotFather (задайте переменную окружения TELEGRAM_BOT_TOKEN)"
|
|
1263
|
+
telegram_chat_id: "Чат, группа или канал, куда пишет бот"
|
|
1264
|
+
telegram_api_base_url: "Сервер Bot API (менять только для прокси или собственного сервера)"
|
|
1192
1265
|
enable_pagerduty_notifications: Эскалация критических ошибок
|
|
1193
1266
|
pagerduty_integration_key: API-ключ PagerDuty
|
|
1194
1267
|
enable_webhook_notifications: Произвольные webhook-адреса
|
|
1195
1268
|
webhook_urls: Свои webhook-адреса
|
|
1269
|
+
webhook_signing_secret: Подписывает исходящие webhook-запросы HMAC-SHA256 (задайте переменную окружения WEBHOOK_SIGNING_SECRET)
|
|
1196
1270
|
enable_scheduled_digests: Ежедневные/еженедельные сводки. Планирование через
|
|
1197
1271
|
SolidQueue, Sidekiq или cron
|
|
1198
1272
|
digest_frequency: Как часто отправлять сводки
|
|
@@ -1211,7 +1285,7 @@ ru:
|
|
|
1211
1285
|
source_code_context_lines: Строк до и после целевой строки
|
|
1212
1286
|
enable_git_blame: Показывать сведения git blame
|
|
1213
1287
|
source_code_cache_ttl: Время жизни кэша исходного кода
|
|
1214
|
-
only_show_app_code_source: Скрывать
|
|
1288
|
+
only_show_app_code_source: "Скрывать код гемов и vendor в просмотрщике исходников"
|
|
1215
1289
|
git_branch_strategy: Стратегия определения ветки
|
|
1216
1290
|
enable_breadcrumbs: Записывать след активности запроса
|
|
1217
1291
|
breadcrumb_buffer_size: Максимум breadcrumbs на запрос
|
|
@@ -1241,6 +1315,7 @@ ru:
|
|
|
1241
1315
|
enable_crash_capture: Хук at_exit для необработанных аварийных завершений
|
|
1242
1316
|
enable_coverage_tracking: Диагностический режим — включите в панели, чтобы
|
|
1243
1317
|
видеть выполненные строки в исходном коде (Ruby 3.2+)
|
|
1318
|
+
enable_missing_translation_tracking: "Считает промахи I18n приложения по локали и ключу (оборачивает I18n.exception_handler)"
|
|
1244
1319
|
enable_rack_attack_tracking: Записывать события throttle/blocklist в отдельную
|
|
1245
1320
|
таблицу
|
|
1246
1321
|
enable_actioncable_tracking: Отслеживать события каналов WebSocket как breadcrumbs
|
|
@@ -1300,6 +1375,8 @@ ru:
|
|
|
1300
1375
|
breadcrumbs: Breadcrumbs
|
|
1301
1376
|
system_health: Состояние системы
|
|
1302
1377
|
swallowed_exceptions: Обнаружение подавленных исключений (swallowed exception)
|
|
1378
|
+
missing_translations: "Отслеживание отсутствующих переводов"
|
|
1379
|
+
boot_errors: "Перехват ошибок запуска"
|
|
1303
1380
|
rack_attack: Отслеживание Rack Attack
|
|
1304
1381
|
actioncable: Отслеживание ActionCable
|
|
1305
1382
|
activestorage: Отслеживание ActiveStorage
|
|
@@ -1713,6 +1790,13 @@ ru:
|
|
|
1713
1790
|
guide_link: Руководство по ActionCable
|
|
1714
1791
|
activestorage:
|
|
1715
1792
|
title: Состояние ActiveStorage
|
|
1793
|
+
probe:
|
|
1794
|
+
title: "Доступность сервиса"
|
|
1795
|
+
reachable: "Доступен"
|
|
1796
|
+
unreachable: "Недоступен"
|
|
1797
|
+
service: "Сервис: %{name}"
|
|
1798
|
+
latency: "%{ms} мс туда и обратно"
|
|
1799
|
+
how: "Одна проверка существования ключа, который никогда не сохраняется, при загрузке этой страницы. GET /health выполняет ту же проверку."
|
|
1716
1800
|
empty:
|
|
1717
1801
|
title: События ActiveStorage не найдены
|
|
1718
1802
|
message: За последние %{days} дн. в breadcrumbs ошибок не обнаружено операций
|