rails_error_dashboard 0.14.3 → 0.15.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 +45 -17
- data/app/controllers/rails_error_dashboard/application_controller.rb +28 -4
- data/app/controllers/rails_error_dashboard/errors_controller.rb +68 -2
- data/app/controllers/rails_error_dashboard/health_controller.rb +38 -0
- data/app/helpers/rails_error_dashboard/application_helper.rb +10 -2
- data/app/helpers/rails_error_dashboard/backtrace_helper.rb +56 -2
- 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 +26 -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 +43 -12
- data/app/models/rails_error_dashboard/missing_translation.rb +43 -0
- data/app/views/layouts/rails_error_dashboard.html.erb +24 -1
- data/app/views/rails_error_dashboard/errors/_error_info.html.erb +3 -1
- 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/settings/_value_badge.html.erb +7 -4
- data/app/views/rails_error_dashboard/errors/settings.html.erb +19 -5
- data/config/locales/de.yml +72 -5
- data/config/locales/en.yml +83 -4
- data/config/locales/es.yml +72 -5
- data/config/locales/fr.yml +72 -5
- data/config/locales/it.yml +72 -5
- data/config/locales/ja.yml +72 -4
- data/config/locales/pl.yml +72 -5
- data/config/locales/pt-BR.yml +72 -5
- data/config/locales/ru.yml +72 -5
- data/config/locales/uk.yml +72 -5
- data/config/locales/zh-CN.yml +72 -4
- data/config/routes.rb +6 -0
- data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +10 -2
- data/db/migrate/20251225074653_remove_environment_from_error_logs.rb +9 -0
- data/db/migrate/20261010000001_create_missing_translations.rb +50 -0
- data/lib/generators/rails_error_dashboard/install/install_generator.rb +40 -38
- data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +31 -3
- data/lib/generators/rails_error_dashboard/uninstall/uninstall_generator.rb +11 -2
- data/lib/rails_error_dashboard/commands/assign_error.rb +24 -1
- data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +9 -1
- data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +103 -0
- data/lib/rails_error_dashboard/commands/log_error.rb +6 -3
- 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 +75 -2
- data/lib/rails_error_dashboard/engine.rb +52 -5
- data/lib/rails_error_dashboard/middleware/rate_limiter.rb +21 -43
- data/lib/rails_error_dashboard/plugin.rb +49 -3
- data/lib/rails_error_dashboard/plugin_registry.rb +61 -12
- data/lib/rails_error_dashboard/queries/boot_errors.rb +76 -0
- data/lib/rails_error_dashboard/queries/dashboard_stats.rb +3 -11
- data/lib/rails_error_dashboard/queries/errors_list.rb +11 -17
- 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/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 +15 -0
- data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +30 -0
- data/lib/rails_error_dashboard/services/crash_capture.rb +85 -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/exception_filter.rb +4 -1
- data/lib/rails_error_dashboard/services/github_link_generator.rb +25 -9
- 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/resolution_callbacks.rb +44 -0
- data/lib/rails_error_dashboard/services/severity_classifier.rb +52 -0
- data/lib/rails_error_dashboard/services/solid_queue_config_check.rb +47 -0
- data/lib/rails_error_dashboard/services/source_code_reader.rb +23 -3
- 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/version.rb +1 -1
- data/lib/rails_error_dashboard.rb +12 -0
- data/lib/tasks/error_dashboard.rake +43 -2
- metadata +21 -2
data/config/locales/pl.yml
CHANGED
|
@@ -60,6 +60,8 @@ pl:
|
|
|
60
60
|
llm: LLM
|
|
61
61
|
n_plus_one: Zapytania N+1
|
|
62
62
|
deprecations: Deprecations
|
|
63
|
+
missing_translations: "Tłumaczenia"
|
|
64
|
+
boot_errors: "Błędy startu"
|
|
63
65
|
swallowed: Wyciszone
|
|
64
66
|
diagnostic_dumps: Diagnostyka
|
|
65
67
|
storms: Sztormy
|
|
@@ -86,6 +88,10 @@ pl:
|
|
|
86
88
|
Ustaw zmienne środowiskowe <code>ERROR_DASHBOARD_USER</code> i <code>ERROR_DASHBOARD_PASSWORD</code>
|
|
87
89
|
albo skonfiguruj <code>authenticate_with</code> w swoim inicjalizatorze.
|
|
88
90
|
dismiss: Ukryj na czas tej sesji
|
|
91
|
+
solid_queue:
|
|
92
|
+
label: "Solid Queue nie uruchomi zadań RED."
|
|
93
|
+
body_html: "Błędy przechwycone w tle i powiadomienia czekają w kolejce, dopóki <code>config/queue.yml</code> nie zostanie poprawiony. Uruchom <code>bin/rails error_dashboard:verify</code>, aby zobaczyć poprawkę, a następnie zrestartuj aplikację."
|
|
94
|
+
guide: "Czego RED potrzebuje od Solid Queue"
|
|
89
95
|
storm:
|
|
90
96
|
active_title: Trwa sztorm błędów
|
|
91
97
|
recent_title: Ochrona przed sztormem zadziałała niedawno
|
|
@@ -861,6 +867,53 @@ pl:
|
|
|
861
867
|
error_log
|
|
862
868
|
footer_tip: Wyciszone wyjątki są podnoszone, a następnie po cichu przechwytywane.
|
|
863
869
|
Mogą ukrywać prawdziwe błędy.
|
|
870
|
+
missing_translations_page:
|
|
871
|
+
title: "Brakujące tłumaczenia"
|
|
872
|
+
empty_title: "Nie zarejestrowano brakujących tłumaczeń"
|
|
873
|
+
empty_body: "W ciągu ostatnich %{days} dni nie zarejestrowano brakujących kluczy tłumaczeń."
|
|
874
|
+
how_title: "Jak śledzone są brakujące tłumaczenia:"
|
|
875
|
+
how_enabled_html: "Śledzenie musi być włączone (%{option})"
|
|
876
|
+
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"
|
|
877
|
+
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"
|
|
878
|
+
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"
|
|
879
|
+
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"
|
|
880
|
+
missing_keys: "Brakujące klucze"
|
|
881
|
+
total_misses: "Łącznie braków"
|
|
882
|
+
locales_affected: "Dotknięte locale"
|
|
883
|
+
all_title: "Brakujące klucze tłumaczeń"
|
|
884
|
+
column_key: "Klucz"
|
|
885
|
+
column_locale: "Locale"
|
|
886
|
+
column_source: "Pierwszy raz w"
|
|
887
|
+
column_misses: "Braki"
|
|
888
|
+
column_first_seen: "Pierwsze wystąpienie"
|
|
889
|
+
overflow_notice: "%{count} braków nie udało się przypisać do klucza, ponieważ bufor trackera (%{limit} kluczy na wątek) był pełny."
|
|
890
|
+
footer_tip: "Dodaj klucz do pliku locale albo przekaż :default. Klucze, na które użytkownicy faktycznie trafili, są wymienione jako pierwsze."
|
|
891
|
+
docs: "Przewodnik i18n Rails"
|
|
892
|
+
|
|
893
|
+
boot_errors_page:
|
|
894
|
+
title: "Błędy startu"
|
|
895
|
+
empty_title: "Nie zarejestrowano błędów startu"
|
|
896
|
+
empty_body: "W ciągu ostatnich %{days} dni żaden proces nie zginął podczas startu."
|
|
897
|
+
how_title: "Jak przechwytywane są błędy startu:"
|
|
898
|
+
how_enabled_html: "Przechwytywanie awarii musi być włączone (%{option})"
|
|
899
|
+
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"
|
|
900
|
+
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"
|
|
901
|
+
how_imported: "Awaria jest zapisywana na dysk, bo bazy danych jeszcze nie ma, i importowana przy następnym udanym starcie"
|
|
902
|
+
how_never: "Procesu zabitego przez SIGKILL lub segfault at_exit nigdy nie zobaczy, w żadnym narzędziu"
|
|
903
|
+
unresolved: "Nierozwiązane"
|
|
904
|
+
boot_crashes: "Awarie startu"
|
|
905
|
+
failed_boots: "Nieudane starty"
|
|
906
|
+
all_title: "Awarie startu według błędu"
|
|
907
|
+
column_error: "Błąd"
|
|
908
|
+
column_file: "Plik"
|
|
909
|
+
column_constant: "Stała"
|
|
910
|
+
column_boots: "Starty"
|
|
911
|
+
column_first_seen: "Pierwsze wystąpienie"
|
|
912
|
+
column_status: "Status"
|
|
913
|
+
status_open: "Otwarty"
|
|
914
|
+
status_resolved: "Rozwiązany"
|
|
915
|
+
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."
|
|
916
|
+
|
|
864
917
|
rack_attack_page:
|
|
865
918
|
title: Zdarzenia limitu żądań
|
|
866
919
|
missing_title: Rack Attack nie jest zainstalowany
|
|
@@ -1146,7 +1199,7 @@ pl:
|
|
|
1146
1199
|
unable_to_detect: Nie udało się wykryć
|
|
1147
1200
|
no_user_model: Nie wykryto modelu User
|
|
1148
1201
|
unable_to_query_count: Nie udało się odczytać liczby
|
|
1149
|
-
|
|
1202
|
+
retention_enforced_by_job: "Usuwane przez RetentionCleanupJob, gdy uruchomi go Twój harmonogram"
|
|
1150
1203
|
keep_forever: Przechowuj bezterminowo
|
|
1151
1204
|
no_automatic_deletion: Bez automatycznego usuwania
|
|
1152
1205
|
run_command: 'Uruchom:'
|
|
@@ -1154,8 +1207,7 @@ pl:
|
|
|
1154
1207
|
options:
|
|
1155
1208
|
enable_middleware: Przechwytuje nieobsłużone wyjątki
|
|
1156
1209
|
enable_error_subscriber: Subskrybuje zdarzenia błędów Rails
|
|
1157
|
-
retention_days:
|
|
1158
|
-
DAYS=90)'
|
|
1210
|
+
retention_days: "Usuwaj błędy niewidziane przez tyle dni. Wykonuje to RetentionCleanupJob, którego gem sam nie planuje"
|
|
1159
1211
|
max_backtrace_lines: Limit głębokości śladu stosu
|
|
1160
1212
|
sampling_rate: Odsetek przechwytywanych błędów
|
|
1161
1213
|
application_name: Nazwa tej aplikacji (wykrywana automatycznie, jeśli nie
|
|
@@ -1174,7 +1226,7 @@ pl:
|
|
|
1174
1226
|
nie ustawiono)
|
|
1175
1227
|
async_logging: Przetwarzanie w zadaniach w tle
|
|
1176
1228
|
async_adapter: Adapter kolejki zadań
|
|
1177
|
-
enable_rate_limiting:
|
|
1229
|
+
enable_rate_limiting: "Ograniczaj żądania do panelu według IP i ścieżki"
|
|
1178
1230
|
rate_limit_per_minute: Żądań na minutę z jednego IP
|
|
1179
1231
|
enable_slack_notifications: Powiadomienia w czasie rzeczywistym
|
|
1180
1232
|
slack_webhook_url: Punkt końcowy webhooka Slack
|
|
@@ -1183,10 +1235,15 @@ pl:
|
|
|
1183
1235
|
notification_email_from: Adres nadawcy
|
|
1184
1236
|
enable_discord_notifications: Powiadomienia przez webhook Discord
|
|
1185
1237
|
discord_webhook_url: Punkt końcowy webhooka Discord
|
|
1238
|
+
enable_telegram_notifications: "Powiadomienia Telegram przez Bot API"
|
|
1239
|
+
telegram_bot_token: "Token bota z @BotFather (ustaw zmienną środowiskową TELEGRAM_BOT_TOKEN)"
|
|
1240
|
+
telegram_chat_id: "Czat, grupa lub kanał, do którego pisze bot"
|
|
1241
|
+
telegram_api_base_url: "Serwer Bot API (zmieniaj tylko dla proxy lub własnego serwera)"
|
|
1186
1242
|
enable_pagerduty_notifications: Eskalacja błędów krytycznych
|
|
1187
1243
|
pagerduty_integration_key: Klucz API PagerDuty
|
|
1188
1244
|
enable_webhook_notifications: Dowolne punkty końcowe webhooków
|
|
1189
1245
|
webhook_urls: Własne punkty końcowe webhooków
|
|
1246
|
+
webhook_signing_secret: Podpisuje wychodzące webhooki algorytmem HMAC-SHA256 (ustaw zmienną środowiskową WEBHOOK_SIGNING_SECRET)
|
|
1190
1247
|
enable_scheduled_digests: Dzienne/tygodniowe e-maile podsumowujące. Planuj
|
|
1191
1248
|
przez SolidQueue, Sidekiq lub cron
|
|
1192
1249
|
digest_frequency: Jak często wysyłać e-maile podsumowujące
|
|
@@ -1206,7 +1263,7 @@ pl:
|
|
|
1206
1263
|
source_code_context_lines: Linie przed i po linii docelowej
|
|
1207
1264
|
enable_git_blame: Pokazuj informacje git blame
|
|
1208
1265
|
source_code_cache_ttl: Czas buforowania kodu źródłowego
|
|
1209
|
-
only_show_app_code_source: Ukryj
|
|
1266
|
+
only_show_app_code_source: "Ukryj kod gemów i vendor w podglądzie źródeł"
|
|
1210
1267
|
git_branch_strategy: Strategia ustalania gałęzi
|
|
1211
1268
|
enable_breadcrumbs: Przechwytuj ślad aktywności żądania
|
|
1212
1269
|
breadcrumb_buffer_size: Maksymalna liczba breadcrumbs na żądanie
|
|
@@ -1238,6 +1295,7 @@ pl:
|
|
|
1238
1295
|
enable_crash_capture: Hak at_exit dla nieobsłużonych awarii
|
|
1239
1296
|
enable_coverage_tracking: Tryb diagnostyczny — włącz w panelu, aby widzieć
|
|
1240
1297
|
wykonane linie w podglądzie kodu (Ruby 3.2+)
|
|
1298
|
+
enable_missing_translation_tracking: "Zlicza braki I18n aplikacji według locale i klucza (opakowuje I18n.exception_handler)"
|
|
1241
1299
|
enable_rack_attack_tracking: Zapisuj zdarzenia throttle/blocklist w osobnej
|
|
1242
1300
|
tabeli
|
|
1243
1301
|
enable_actioncable_tracking: Śledź zdarzenia kanałów WebSocket jako breadcrumbs
|
|
@@ -1297,6 +1355,8 @@ pl:
|
|
|
1297
1355
|
breadcrumbs: Breadcrumbs
|
|
1298
1356
|
system_health: Stan systemu
|
|
1299
1357
|
swallowed_exceptions: Wykrywanie wyciszonych wyjątków
|
|
1358
|
+
missing_translations: "Śledzenie brakujących tłumaczeń"
|
|
1359
|
+
boot_errors: "Przechwytywanie błędów startu"
|
|
1300
1360
|
rack_attack: Śledzenie Rack Attack
|
|
1301
1361
|
actioncable: Śledzenie ActionCable
|
|
1302
1362
|
activestorage: Śledzenie ActiveStorage
|
|
@@ -1709,6 +1769,13 @@ pl:
|
|
|
1709
1769
|
guide_link: Przewodnik po ActionCable
|
|
1710
1770
|
activestorage:
|
|
1711
1771
|
title: Stan ActiveStorage
|
|
1772
|
+
probe:
|
|
1773
|
+
title: "Osiągalność usługi"
|
|
1774
|
+
reachable: "Osiągalna"
|
|
1775
|
+
unreachable: "Nieosiągalna"
|
|
1776
|
+
service: "Usługa: %{name}"
|
|
1777
|
+
latency: "%{ms} ms w obie strony"
|
|
1778
|
+
how: "Jedno sprawdzenie istnienia klucza, który nigdy nie jest zapisywany, wykonywane przy ładowaniu tej strony. GET /health wykonuje tę samą sondę."
|
|
1712
1779
|
empty:
|
|
1713
1780
|
title: Nie znaleziono zdarzeń ActiveStorage
|
|
1714
1781
|
message: W ciągu ostatnich %{days} dni nie wykryto operacji usług ActiveStorage
|
data/config/locales/pt-BR.yml
CHANGED
|
@@ -60,6 +60,8 @@ pt-BR:
|
|
|
60
60
|
llm: LLM
|
|
61
61
|
n_plus_one: Consultas N+1
|
|
62
62
|
deprecations: Deprecations
|
|
63
|
+
missing_translations: "Traduções"
|
|
64
|
+
boot_errors: "Erros de inicialização"
|
|
63
65
|
swallowed: Engolidas
|
|
64
66
|
diagnostic_dumps: Diagnóstico
|
|
65
67
|
storms: Tempestades
|
|
@@ -86,6 +88,10 @@ pt-BR:
|
|
|
86
88
|
Defina as variáveis de ambiente <code>ERROR_DASHBOARD_USER</code> e <code>ERROR_DASHBOARD_PASSWORD</code>,
|
|
87
89
|
ou configure <code>authenticate_with</code> no seu initializer.
|
|
88
90
|
dismiss: Ocultar nesta sessão
|
|
91
|
+
solid_queue:
|
|
92
|
+
label: "O Solid Queue não executará os jobs do RED."
|
|
93
|
+
body_html: "Erros capturados em segundo plano e notificações aguardam na fila até que <code>config/queue.yml</code> seja corrigido. Execute <code>bin/rails error_dashboard:verify</code> para ver a correção e reinicie."
|
|
94
|
+
guide: "O que o RED precisa do Solid Queue"
|
|
89
95
|
storm:
|
|
90
96
|
active_title: Tempestade de erros em andamento
|
|
91
97
|
recent_title: A proteção contra tempestades foi acionada recentemente
|
|
@@ -851,6 +857,53 @@ pt-BR:
|
|
|
851
857
|
view_unrescued: Ver os erros %{exception} não tratados que chegaram ao error_log
|
|
852
858
|
footer_tip: As exceções engolidas são levantadas e depois tratadas em silêncio.
|
|
853
859
|
Elas podem esconder bugs reais.
|
|
860
|
+
missing_translations_page:
|
|
861
|
+
title: "Traduções ausentes"
|
|
862
|
+
empty_title: "Nenhuma tradução ausente registrada"
|
|
863
|
+
empty_body: "Nenhuma chave de tradução ausente foi registrada nos últimos %{days} dias."
|
|
864
|
+
how_title: "Como as traduções ausentes são rastreadas:"
|
|
865
|
+
how_enabled_html: "O rastreamento precisa estar ativado (%{option})"
|
|
866
|
+
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"
|
|
867
|
+
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"
|
|
868
|
+
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"
|
|
869
|
+
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"
|
|
870
|
+
missing_keys: "Chaves ausentes"
|
|
871
|
+
total_misses: "Total de falhas"
|
|
872
|
+
locales_affected: "Locales afetados"
|
|
873
|
+
all_title: "Chaves de tradução ausentes"
|
|
874
|
+
column_key: "Chave"
|
|
875
|
+
column_locale: "Locale"
|
|
876
|
+
column_source: "Visto primeiro em"
|
|
877
|
+
column_misses: "Falhas"
|
|
878
|
+
column_first_seen: "Primeira ocorrência"
|
|
879
|
+
overflow_notice: "%{count} falhas não puderam ser atribuídas a uma chave porque o buffer do rastreador (%{limit} chaves por thread) estava cheio."
|
|
880
|
+
footer_tip: "Adicione a chave ao arquivo de locale ou passe um :default. As chaves que os usuários realmente encontraram aparecem primeiro."
|
|
881
|
+
docs: "Guia i18n do Rails"
|
|
882
|
+
|
|
883
|
+
boot_errors_page:
|
|
884
|
+
title: "Erros de inicialização"
|
|
885
|
+
empty_title: "Nenhum erro de inicialização registrado"
|
|
886
|
+
empty_body: "Nenhum processo morreu ao iniciar nos últimos %{days} dias."
|
|
887
|
+
how_title: "Como os erros de inicialização são capturados:"
|
|
888
|
+
how_enabled_html: "A captura de falhas precisa estar ativada (%{option})"
|
|
889
|
+
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"
|
|
890
|
+
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"
|
|
891
|
+
how_imported: "A falha é gravada em disco, porque ainda não há banco de dados, e importada na próxima inicialização bem-sucedida"
|
|
892
|
+
how_never: "Um processo morto por SIGKILL ou por um segfault nunca é visto pelo at_exit, em nenhuma ferramenta"
|
|
893
|
+
unresolved: "Não resolvidos"
|
|
894
|
+
boot_crashes: "Falhas de inicialização"
|
|
895
|
+
failed_boots: "Inicializações com falha"
|
|
896
|
+
all_title: "Falhas de inicialização por erro"
|
|
897
|
+
column_error: "Erro"
|
|
898
|
+
column_file: "Arquivo"
|
|
899
|
+
column_constant: "Constante"
|
|
900
|
+
column_boots: "Inicializações"
|
|
901
|
+
column_first_seen: "Primeira ocorrência"
|
|
902
|
+
column_status: "Status"
|
|
903
|
+
status_open: "Aberto"
|
|
904
|
+
status_resolved: "Resolvido"
|
|
905
|
+
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."
|
|
906
|
+
|
|
854
907
|
rack_attack_page:
|
|
855
908
|
title: Eventos de limite de taxa
|
|
856
909
|
missing_title: O Rack Attack não está instalado
|
|
@@ -1120,7 +1173,7 @@ pt-BR:
|
|
|
1120
1173
|
unable_to_detect: Não foi possível detectar
|
|
1121
1174
|
no_user_model: Nenhum modelo User detectado
|
|
1122
1175
|
unable_to_query_count: Não foi possível consultar a quantidade
|
|
1123
|
-
|
|
1176
|
+
retention_enforced_by_job: "Excluídos pelo RetentionCleanupJob quando seu agendador o executar"
|
|
1124
1177
|
keep_forever: Manter para sempre
|
|
1125
1178
|
no_automatic_deletion: Sem exclusão automática
|
|
1126
1179
|
run_command: 'Executar:'
|
|
@@ -1128,8 +1181,7 @@ pt-BR:
|
|
|
1128
1181
|
options:
|
|
1129
1182
|
enable_middleware: Captura exceções não tratadas
|
|
1130
1183
|
enable_error_subscriber: Assina os eventos de erro do Rails
|
|
1131
|
-
retention_days:
|
|
1132
|
-
DAYS=90)'
|
|
1184
|
+
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"
|
|
1133
1185
|
max_backtrace_lines: Profundidade máxima do backtrace
|
|
1134
1186
|
sampling_rate: Porcentagem de erros capturados
|
|
1135
1187
|
application_name: Nome desta aplicação (detectado automaticamente se não for
|
|
@@ -1147,7 +1199,7 @@ pt-BR:
|
|
|
1147
1199
|
se não for definido)
|
|
1148
1200
|
async_logging: Processamento por jobs em segundo plano
|
|
1149
1201
|
async_adapter: Adaptador da fila de jobs
|
|
1150
|
-
enable_rate_limiting: Limitar as requisições
|
|
1202
|
+
enable_rate_limiting: "Limitar as requisições do painel por IP e caminho"
|
|
1151
1203
|
rate_limit_per_minute: Requisições por minuto e por IP
|
|
1152
1204
|
enable_slack_notifications: Notificações em tempo real
|
|
1153
1205
|
slack_webhook_url: Endpoint do webhook do Slack
|
|
@@ -1156,10 +1208,15 @@ pt-BR:
|
|
|
1156
1208
|
notification_email_from: Endereço do remetente
|
|
1157
1209
|
enable_discord_notifications: Notificações por webhook do Discord
|
|
1158
1210
|
discord_webhook_url: Endpoint do webhook do Discord
|
|
1211
|
+
enable_telegram_notifications: "Notificações do Telegram via Bot API"
|
|
1212
|
+
telegram_bot_token: "Token do bot do @BotFather (defina a variável de ambiente TELEGRAM_BOT_TOKEN)"
|
|
1213
|
+
telegram_chat_id: "Chat, grupo ou canal em que o bot publica"
|
|
1214
|
+
telegram_api_base_url: "Servidor da Bot API (altere apenas para um proxy ou servidor próprio)"
|
|
1159
1215
|
enable_pagerduty_notifications: Escalonamento de erros críticos
|
|
1160
1216
|
pagerduty_integration_key: Chave de API do PagerDuty
|
|
1161
1217
|
enable_webhook_notifications: Endpoints de webhook genéricos
|
|
1162
1218
|
webhook_urls: Endpoints de webhook personalizados
|
|
1219
|
+
webhook_signing_secret: Assina os webhooks de saída com HMAC-SHA256 (defina a variável de ambiente WEBHOOK_SIGNING_SECRET)
|
|
1163
1220
|
enable_scheduled_digests: E-mails de resumo diários/semanais. Agendamento
|
|
1164
1221
|
via SolidQueue, Sidekiq ou cron
|
|
1165
1222
|
digest_frequency: Com que frequência enviar os e-mails de resumo
|
|
@@ -1179,7 +1236,7 @@ pt-BR:
|
|
|
1179
1236
|
source_code_context_lines: Linhas antes e depois da linha de destino
|
|
1180
1237
|
enable_git_blame: Exibir as informações do git blame
|
|
1181
1238
|
source_code_cache_ttl: Duração do cache do código-fonte
|
|
1182
|
-
only_show_app_code_source: Ocultar gems e
|
|
1239
|
+
only_show_app_code_source: "Ocultar código de gems e vendor no visualizador de código"
|
|
1183
1240
|
git_branch_strategy: Estratégia de resolução do branch
|
|
1184
1241
|
enable_breadcrumbs: Capturar o rastro de atividade da requisição
|
|
1185
1242
|
breadcrumb_buffer_size: Número máximo de breadcrumbs por requisição
|
|
@@ -1211,6 +1268,7 @@ pt-BR:
|
|
|
1211
1268
|
enable_crash_capture: Hook at_exit para falhas não tratadas
|
|
1212
1269
|
enable_coverage_tracking: Modo diagnóstico — ative pelo painel para ver as
|
|
1213
1270
|
linhas executadas na visualização do código-fonte (Ruby 3.2+)
|
|
1271
|
+
enable_missing_translation_tracking: "Conta as falhas de I18n do app por locale e chave (envolve o I18n.exception_handler)"
|
|
1214
1272
|
enable_rack_attack_tracking: Registrar os eventos throttle/blocklist em uma
|
|
1215
1273
|
tabela própria
|
|
1216
1274
|
enable_actioncable_tracking: Monitorar os eventos de canal do WebSocket como
|
|
@@ -1268,6 +1326,8 @@ pt-BR:
|
|
|
1268
1326
|
breadcrumbs: Breadcrumbs
|
|
1269
1327
|
system_health: Saúde do sistema
|
|
1270
1328
|
swallowed_exceptions: Detecção de exceções engolidas
|
|
1329
|
+
missing_translations: "Rastreamento de traduções ausentes"
|
|
1330
|
+
boot_errors: "Captura de erros de inicialização"
|
|
1271
1331
|
rack_attack: Monitoramento do Rack Attack
|
|
1272
1332
|
actioncable: Monitoramento do ActionCable
|
|
1273
1333
|
activestorage: Monitoramento do ActiveStorage
|
|
@@ -1676,6 +1736,13 @@ pt-BR:
|
|
|
1676
1736
|
guide_link: Guia do ActionCable
|
|
1677
1737
|
activestorage:
|
|
1678
1738
|
title: Saúde do ActiveStorage
|
|
1739
|
+
probe:
|
|
1740
|
+
title: "Alcançabilidade do serviço"
|
|
1741
|
+
reachable: "Alcançável"
|
|
1742
|
+
unreachable: "Inalcançável"
|
|
1743
|
+
service: "Serviço: %{name}"
|
|
1744
|
+
latency: "%{ms} ms de ida e volta"
|
|
1745
|
+
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."
|
|
1679
1746
|
empty:
|
|
1680
1747
|
title: Nenhum evento do ActiveStorage encontrado
|
|
1681
1748
|
message: Nenhuma operação do serviço ActiveStorage foi detectada nos breadcrumbs
|
data/config/locales/ru.yml
CHANGED
|
@@ -60,6 +60,8 @@ ru:
|
|
|
60
60
|
llm: LLM
|
|
61
61
|
n_plus_one: N+1 запросы
|
|
62
62
|
deprecations: Устаревшее
|
|
63
|
+
missing_translations: "Переводы"
|
|
64
|
+
boot_errors: "Ошибки запуска"
|
|
63
65
|
swallowed: Подавленные
|
|
64
66
|
diagnostic_dumps: Диагностика
|
|
65
67
|
storms: Штормы
|
|
@@ -86,6 +88,10 @@ ru:
|
|
|
86
88
|
Задайте переменные окружения <code>ERROR_DASHBOARD_USER</code> и <code>ERROR_DASHBOARD_PASSWORD</code>
|
|
87
89
|
или настройте <code>authenticate_with</code> в инициализаторе.
|
|
88
90
|
dismiss: Скрыть до конца сессии
|
|
91
|
+
solid_queue:
|
|
92
|
+
label: "Solid Queue не будет выполнять задания RED."
|
|
93
|
+
body_html: "Ошибки, записанные в фоне, и уведомления ждут в очереди, пока не исправлен <code>config/queue.yml</code>. Запустите <code>bin/rails error_dashboard:verify</code>, чтобы увидеть исправление, затем перезапустите приложение."
|
|
94
|
+
guide: "Что RED нужно от Solid Queue"
|
|
89
95
|
storm:
|
|
90
96
|
active_title: Идёт шторм ошибок
|
|
91
97
|
recent_title: Недавно сработала защита от шторма
|
|
@@ -864,6 +870,53 @@ ru:
|
|
|
864
870
|
error_log
|
|
865
871
|
footer_tip: Подавленные исключения возбуждаются, а затем молча перехватываются.
|
|
866
872
|
Они могут скрывать настоящие ошибки.
|
|
873
|
+
missing_translations_page:
|
|
874
|
+
title: "Отсутствующие переводы"
|
|
875
|
+
empty_title: "Отсутствующие переводы не зафиксированы"
|
|
876
|
+
empty_body: "За последние %{days} дн. отсутствующие ключи перевода не зафиксированы."
|
|
877
|
+
how_title: "Как отслеживаются отсутствующие переводы:"
|
|
878
|
+
how_enabled_html: "Отслеживание должно быть включено (%{option})"
|
|
879
|
+
how_hooked: "RED оборачивает I18n.exception_handler и передаёт вызов обработчику, который уже был в приложении; больше ничего в настройках I18n не меняется"
|
|
880
|
+
how_recorded: "Каждый запрос, дошедший до обработчика — как через I18n.t, так и через хелпер t() во view — считается по локали и ключу вместе с первым замеченным местом вызова"
|
|
881
|
+
how_not_seen: "Запрос с :default никогда не даёт промаха, а запрос с raise_on_missing_translations выбрасывает исключение до вызова любого обработчика, поэтому здесь не учитываются ни тот, ни другой"
|
|
882
|
+
how_buffered: "Промахи считаются в памяти и записываются в конце запроса или задания, так что они появятся с небольшой задержкой"
|
|
883
|
+
missing_keys: "Отсутствующие ключи"
|
|
884
|
+
total_misses: "Всего промахов"
|
|
885
|
+
locales_affected: "Затронутые локали"
|
|
886
|
+
all_title: "Отсутствующие ключи перевода"
|
|
887
|
+
column_key: "Ключ"
|
|
888
|
+
column_locale: "Локаль"
|
|
889
|
+
column_source: "Впервые замечен в"
|
|
890
|
+
column_misses: "Промахи"
|
|
891
|
+
column_first_seen: "Впервые замечен"
|
|
892
|
+
overflow_notice: "%{count} промахов не удалось отнести к ключу: буфер трекера (%{limit} ключей на поток) был заполнен."
|
|
893
|
+
footer_tip: "Добавьте ключ в файл локали или передайте :default. Ключи, на которые действительно наткнулись пользователи, идут первыми."
|
|
894
|
+
docs: "Руководство Rails по i18n"
|
|
895
|
+
|
|
896
|
+
boot_errors_page:
|
|
897
|
+
title: "Ошибки запуска"
|
|
898
|
+
empty_title: "Ошибки запуска не зафиксированы"
|
|
899
|
+
empty_body: "За последние %{days} дн. ни один процесс не упал при запуске."
|
|
900
|
+
how_title: "Как перехватываются ошибки запуска:"
|
|
901
|
+
how_enabled_html: "Перехват аварий должен быть включён (%{option})"
|
|
902
|
+
how_hooked: "RED регистрирует свой хук at_exit сразу после ваших инициализаторов и до eager loading в Rails, поэтому авария при запуске видна, даже если приложение так и не запустилось"
|
|
903
|
+
how_captured_html: "%{zeitwerk} из файла, определяющего не ту константу, %{syntax} в модели, инициализатор с исключением: всё, что убивает процесс до обработки первого запроса"
|
|
904
|
+
how_imported: "Авария записывается на диск, потому что базы данных ещё нет, и импортируется при следующем успешном запуске"
|
|
905
|
+
how_never: "Процесс, убитый SIGKILL или упавший с segfault, at_exit не увидит ни в одном инструменте"
|
|
906
|
+
unresolved: "Нерешённые"
|
|
907
|
+
boot_crashes: "Аварии при запуске"
|
|
908
|
+
failed_boots: "Неудачные запуски"
|
|
909
|
+
all_title: "Аварии при запуске по ошибке"
|
|
910
|
+
column_error: "Ошибка"
|
|
911
|
+
column_file: "Файл"
|
|
912
|
+
column_constant: "Константа"
|
|
913
|
+
column_boots: "Запуски"
|
|
914
|
+
column_first_seen: "Впервые замечена"
|
|
915
|
+
column_status: "Статус"
|
|
916
|
+
status_open: "Открыта"
|
|
917
|
+
status_resolved: "Решена"
|
|
918
|
+
footer_tip: "Авария при запуске означает, что процесс не обработал ни одного запроса. Исправьте её до следующего деплоя; строка закрывается как любая другая ошибка."
|
|
919
|
+
|
|
867
920
|
rack_attack_page:
|
|
868
921
|
title: События ограничения частоты
|
|
869
922
|
missing_title: Rack Attack не установлен
|
|
@@ -1149,7 +1202,7 @@ ru:
|
|
|
1149
1202
|
unable_to_detect: Не удалось определить
|
|
1150
1203
|
no_user_model: Модель User не обнаружена
|
|
1151
1204
|
unable_to_query_count: Не удалось получить количество
|
|
1152
|
-
|
|
1205
|
+
retention_enforced_by_job: "Удаляются RetentionCleanupJob, когда его запускает ваш планировщик"
|
|
1153
1206
|
keep_forever: Хранить всегда
|
|
1154
1207
|
no_automatic_deletion: Автоматическое удаление отключено
|
|
1155
1208
|
run_command: 'Выполните:'
|
|
@@ -1157,8 +1210,7 @@ ru:
|
|
|
1157
1210
|
options:
|
|
1158
1211
|
enable_middleware: Перехватывает необработанные исключения
|
|
1159
1212
|
enable_error_subscriber: Подписывается на события ошибок Rails
|
|
1160
|
-
retention_days:
|
|
1161
|
-
DAYS=90)'
|
|
1213
|
+
retention_days: "Удалять ошибки, не встречавшиеся столько дней. Выполняет RetentionCleanupJob, который гем сам не планирует"
|
|
1162
1214
|
max_backtrace_lines: Ограничение глубины backtrace
|
|
1163
1215
|
sampling_rate: Доля захватываемых ошибок
|
|
1164
1216
|
application_name: Имя этого приложения (определяется автоматически, если не
|
|
@@ -1176,7 +1228,7 @@ ru:
|
|
|
1176
1228
|
если не задано)
|
|
1177
1229
|
async_logging: Обработка в фоновых задачах
|
|
1178
1230
|
async_adapter: Адаптер очереди задач
|
|
1179
|
-
enable_rate_limiting: Ограничивать
|
|
1231
|
+
enable_rate_limiting: "Ограничивать запросы к панели по IP и пути"
|
|
1180
1232
|
rate_limit_per_minute: Запросов в минуту на IP
|
|
1181
1233
|
enable_slack_notifications: Уведомления в реальном времени
|
|
1182
1234
|
slack_webhook_url: Адрес webhook Slack
|
|
@@ -1185,10 +1237,15 @@ ru:
|
|
|
1185
1237
|
notification_email_from: Адрес отправителя
|
|
1186
1238
|
enable_discord_notifications: Уведомления через webhook Discord
|
|
1187
1239
|
discord_webhook_url: Адрес webhook Discord
|
|
1240
|
+
enable_telegram_notifications: "Уведомления Telegram через Bot API"
|
|
1241
|
+
telegram_bot_token: "Токен бота от @BotFather (задайте переменную окружения TELEGRAM_BOT_TOKEN)"
|
|
1242
|
+
telegram_chat_id: "Чат, группа или канал, куда пишет бот"
|
|
1243
|
+
telegram_api_base_url: "Сервер Bot API (менять только для прокси или собственного сервера)"
|
|
1188
1244
|
enable_pagerduty_notifications: Эскалация критических ошибок
|
|
1189
1245
|
pagerduty_integration_key: API-ключ PagerDuty
|
|
1190
1246
|
enable_webhook_notifications: Произвольные webhook-адреса
|
|
1191
1247
|
webhook_urls: Свои webhook-адреса
|
|
1248
|
+
webhook_signing_secret: Подписывает исходящие webhook-запросы HMAC-SHA256 (задайте переменную окружения WEBHOOK_SIGNING_SECRET)
|
|
1192
1249
|
enable_scheduled_digests: Ежедневные/еженедельные сводки. Планирование через
|
|
1193
1250
|
SolidQueue, Sidekiq или cron
|
|
1194
1251
|
digest_frequency: Как часто отправлять сводки
|
|
@@ -1207,7 +1264,7 @@ ru:
|
|
|
1207
1264
|
source_code_context_lines: Строк до и после целевой строки
|
|
1208
1265
|
enable_git_blame: Показывать сведения git blame
|
|
1209
1266
|
source_code_cache_ttl: Время жизни кэша исходного кода
|
|
1210
|
-
only_show_app_code_source: Скрывать
|
|
1267
|
+
only_show_app_code_source: "Скрывать код гемов и vendor в просмотрщике исходников"
|
|
1211
1268
|
git_branch_strategy: Стратегия определения ветки
|
|
1212
1269
|
enable_breadcrumbs: Записывать след активности запроса
|
|
1213
1270
|
breadcrumb_buffer_size: Максимум breadcrumbs на запрос
|
|
@@ -1237,6 +1294,7 @@ ru:
|
|
|
1237
1294
|
enable_crash_capture: Хук at_exit для необработанных аварийных завершений
|
|
1238
1295
|
enable_coverage_tracking: Диагностический режим — включите в панели, чтобы
|
|
1239
1296
|
видеть выполненные строки в исходном коде (Ruby 3.2+)
|
|
1297
|
+
enable_missing_translation_tracking: "Считает промахи I18n приложения по локали и ключу (оборачивает I18n.exception_handler)"
|
|
1240
1298
|
enable_rack_attack_tracking: Записывать события throttle/blocklist в отдельную
|
|
1241
1299
|
таблицу
|
|
1242
1300
|
enable_actioncable_tracking: Отслеживать события каналов WebSocket как breadcrumbs
|
|
@@ -1296,6 +1354,8 @@ ru:
|
|
|
1296
1354
|
breadcrumbs: Breadcrumbs
|
|
1297
1355
|
system_health: Состояние системы
|
|
1298
1356
|
swallowed_exceptions: Обнаружение подавленных исключений (swallowed exception)
|
|
1357
|
+
missing_translations: "Отслеживание отсутствующих переводов"
|
|
1358
|
+
boot_errors: "Перехват ошибок запуска"
|
|
1299
1359
|
rack_attack: Отслеживание Rack Attack
|
|
1300
1360
|
actioncable: Отслеживание ActionCable
|
|
1301
1361
|
activestorage: Отслеживание ActiveStorage
|
|
@@ -1709,6 +1769,13 @@ ru:
|
|
|
1709
1769
|
guide_link: Руководство по ActionCable
|
|
1710
1770
|
activestorage:
|
|
1711
1771
|
title: Состояние ActiveStorage
|
|
1772
|
+
probe:
|
|
1773
|
+
title: "Доступность сервиса"
|
|
1774
|
+
reachable: "Доступен"
|
|
1775
|
+
unreachable: "Недоступен"
|
|
1776
|
+
service: "Сервис: %{name}"
|
|
1777
|
+
latency: "%{ms} мс туда и обратно"
|
|
1778
|
+
how: "Одна проверка существования ключа, который никогда не сохраняется, при загрузке этой страницы. GET /health выполняет ту же проверку."
|
|
1712
1779
|
empty:
|
|
1713
1780
|
title: События ActiveStorage не найдены
|
|
1714
1781
|
message: За последние %{days} дн. в breadcrumbs ошибок не обнаружено операций
|
data/config/locales/uk.yml
CHANGED
|
@@ -60,6 +60,8 @@ uk:
|
|
|
60
60
|
llm: LLM
|
|
61
61
|
n_plus_one: Запити N+1
|
|
62
62
|
deprecations: Deprecations
|
|
63
|
+
missing_translations: "Переклади"
|
|
64
|
+
boot_errors: "Помилки запуску"
|
|
63
65
|
swallowed: Придушені
|
|
64
66
|
diagnostic_dumps: Діагностика
|
|
65
67
|
storms: Шторми
|
|
@@ -86,6 +88,10 @@ uk:
|
|
|
86
88
|
Встановіть змінні середовища <code>ERROR_DASHBOARD_USER</code> і <code>ERROR_DASHBOARD_PASSWORD</code>
|
|
87
89
|
або налаштуйте <code>authenticate_with</code> у своєму ініціалізаторі.
|
|
88
90
|
dismiss: Приховати для цієї сесії
|
|
91
|
+
solid_queue:
|
|
92
|
+
label: "Solid Queue не виконуватиме завдання RED."
|
|
93
|
+
body_html: "Помилки, записані у фоні, і сповіщення чекають у черзі, доки не виправлено <code>config/queue.yml</code>. Запустіть <code>bin/rails error_dashboard:verify</code>, щоб побачити виправлення, потім перезапустіть застосунок."
|
|
94
|
+
guide: "Що RED потрібно від Solid Queue"
|
|
89
95
|
storm:
|
|
90
96
|
active_title: Триває шторм помилок
|
|
91
97
|
recent_title: Нещодавно спрацював захист від штормів
|
|
@@ -862,6 +868,53 @@ uk:
|
|
|
862
868
|
до error_log
|
|
863
869
|
footer_tip: Придушені винятки піднімаються, а потім мовчки перехоплюються.
|
|
864
870
|
Вони можуть приховувати справжні помилки.
|
|
871
|
+
missing_translations_page:
|
|
872
|
+
title: "Відсутні переклади"
|
|
873
|
+
empty_title: "Відсутні переклади не зафіксовано"
|
|
874
|
+
empty_body: "За останні %{days} дн. відсутніх ключів перекладу не зафіксовано."
|
|
875
|
+
how_title: "Як відстежуються відсутні переклади:"
|
|
876
|
+
how_enabled_html: "Відстеження має бути ввімкнено (%{option})"
|
|
877
|
+
how_hooked: "RED обгортає I18n.exception_handler і передає виклик обробнику, який уже був у застосунку; більше нічого в налаштуваннях I18n не змінюється"
|
|
878
|
+
how_recorded: "Кожен запит, що дійшов до обробника — як через I18n.t, так і через хелпер t() у view — рахується за локаллю та ключем разом із першим поміченим місцем виклику"
|
|
879
|
+
how_not_seen: "Запит із :default ніколи не промахується, а запит із raise_on_missing_translations кидає виняток до виклику будь-якого обробника, тому тут не враховуються ні той, ні інший"
|
|
880
|
+
how_buffered: "Промахи рахуються в пам'яті й записуються наприкінці запиту або завдання, тож вони з'являться з невеликою затримкою"
|
|
881
|
+
missing_keys: "Відсутні ключі"
|
|
882
|
+
total_misses: "Усього промахів"
|
|
883
|
+
locales_affected: "Зачеплені локалі"
|
|
884
|
+
all_title: "Відсутні ключі перекладу"
|
|
885
|
+
column_key: "Ключ"
|
|
886
|
+
column_locale: "Локаль"
|
|
887
|
+
column_source: "Уперше помічено в"
|
|
888
|
+
column_misses: "Промахи"
|
|
889
|
+
column_first_seen: "Уперше помічено"
|
|
890
|
+
overflow_notice: "%{count} промахів не вдалося віднести до ключа: буфер трекера (%{limit} ключів на потік) був заповнений."
|
|
891
|
+
footer_tip: "Додайте ключ до файлу локалі або передайте :default. Ключі, на які справді натрапили користувачі, йдуть першими."
|
|
892
|
+
docs: "Посібник Rails з i18n"
|
|
893
|
+
|
|
894
|
+
boot_errors_page:
|
|
895
|
+
title: "Помилки запуску"
|
|
896
|
+
empty_title: "Помилки запуску не зафіксовано"
|
|
897
|
+
empty_body: "За останні %{days} дн. жоден процес не впав під час запуску."
|
|
898
|
+
how_title: "Як перехоплюються помилки запуску:"
|
|
899
|
+
how_enabled_html: "Перехоплення аварій має бути ввімкнено (%{option})"
|
|
900
|
+
how_hooked: "RED реєструє свій хук at_exit одразу після ваших ініціалізаторів і до eager loading у Rails, тому аварія під час запуску видима, навіть якщо застосунок так і не запустився"
|
|
901
|
+
how_captured_html: "%{zeitwerk} із файлу, що визначає не ту константу, %{syntax} у моделі, ініціалізатор з винятком: усе, що вбиває процес до обробки першого запиту"
|
|
902
|
+
how_imported: "Аварія записується на диск, бо бази даних ще немає, і імпортується під час наступного успішного запуску"
|
|
903
|
+
how_never: "Процес, убитий SIGKILL або segfault, at_exit не побачить у жодному інструменті"
|
|
904
|
+
unresolved: "Невирішені"
|
|
905
|
+
boot_crashes: "Аварії під час запуску"
|
|
906
|
+
failed_boots: "Невдалі запуски"
|
|
907
|
+
all_title: "Аварії під час запуску за помилкою"
|
|
908
|
+
column_error: "Помилка"
|
|
909
|
+
column_file: "Файл"
|
|
910
|
+
column_constant: "Константа"
|
|
911
|
+
column_boots: "Запуски"
|
|
912
|
+
column_first_seen: "Уперше помічено"
|
|
913
|
+
column_status: "Статус"
|
|
914
|
+
status_open: "Відкрита"
|
|
915
|
+
status_resolved: "Вирішена"
|
|
916
|
+
footer_tip: "Аварія під час запуску означає, що процес не обробив жодного запиту. Виправте її до наступного розгортання; рядок закривається як будь-яка інша помилка."
|
|
917
|
+
|
|
865
918
|
rack_attack_page:
|
|
866
919
|
title: Події обмеження запитів
|
|
867
920
|
missing_title: Rack Attack не встановлено
|
|
@@ -1145,7 +1198,7 @@ uk:
|
|
|
1145
1198
|
unable_to_detect: Не вдалося визначити
|
|
1146
1199
|
no_user_model: Модель User не виявлено
|
|
1147
1200
|
unable_to_query_count: Не вдалося отримати кількість
|
|
1148
|
-
|
|
1201
|
+
retention_enforced_by_job: "Видаляються RetentionCleanupJob, коли його запускає ваш планувальник"
|
|
1149
1202
|
keep_forever: Зберігати назавжди
|
|
1150
1203
|
no_automatic_deletion: Без автоматичного видалення
|
|
1151
1204
|
run_command: 'Виконайте:'
|
|
@@ -1153,8 +1206,7 @@ uk:
|
|
|
1153
1206
|
options:
|
|
1154
1207
|
enable_middleware: Перехоплює необроблені винятки
|
|
1155
1208
|
enable_error_subscriber: Підписується на події помилок Rails
|
|
1156
|
-
retention_days:
|
|
1157
|
-
DAYS=90)'
|
|
1209
|
+
retention_days: "Видаляти помилки, яких не було стільки днів. Виконує RetentionCleanupJob, який гем сам не планує"
|
|
1158
1210
|
max_backtrace_lines: Обмеження глибини стеку викликів
|
|
1159
1211
|
sampling_rate: Відсоток захоплених помилок
|
|
1160
1212
|
application_name: Назва цього застосунку (визначається автоматично, якщо не
|
|
@@ -1172,7 +1224,7 @@ uk:
|
|
|
1172
1224
|
якщо не задано)
|
|
1173
1225
|
async_logging: Обробка у фонових завданнях
|
|
1174
1226
|
async_adapter: Адаптер черги завдань
|
|
1175
|
-
enable_rate_limiting: Обмежувати запити до
|
|
1227
|
+
enable_rate_limiting: "Обмежувати запити до панелі за IP і шляхом"
|
|
1176
1228
|
rate_limit_per_minute: Запитів за хвилину з однієї IP-адреси
|
|
1177
1229
|
enable_slack_notifications: Сповіщення в реальному часі
|
|
1178
1230
|
slack_webhook_url: Кінцева точка webhook у Slack
|
|
@@ -1181,10 +1233,15 @@ uk:
|
|
|
1181
1233
|
notification_email_from: Адреса відправника
|
|
1182
1234
|
enable_discord_notifications: Сповіщення через webhook у Discord
|
|
1183
1235
|
discord_webhook_url: Кінцева точка webhook у Discord
|
|
1236
|
+
enable_telegram_notifications: "Сповіщення Telegram через Bot API"
|
|
1237
|
+
telegram_bot_token: "Токен бота від @BotFather (задайте змінну середовища TELEGRAM_BOT_TOKEN)"
|
|
1238
|
+
telegram_chat_id: "Чат, група або канал, куди пише бот"
|
|
1239
|
+
telegram_api_base_url: "Сервер Bot API (змінюйте лише для проксі або власного сервера)"
|
|
1184
1240
|
enable_pagerduty_notifications: Ескалація критичних помилок
|
|
1185
1241
|
pagerduty_integration_key: Ключ API PagerDuty
|
|
1186
1242
|
enable_webhook_notifications: Довільні кінцеві точки webhook
|
|
1187
1243
|
webhook_urls: Власні кінцеві точки webhook
|
|
1244
|
+
webhook_signing_secret: Підписує вихідні webhook-запити HMAC-SHA256 (задайте змінну середовища WEBHOOK_SIGNING_SECRET)
|
|
1188
1245
|
enable_scheduled_digests: Щоденні/щотижневі підсумкові листи. Плануйте через
|
|
1189
1246
|
SolidQueue, Sidekiq або cron
|
|
1190
1247
|
digest_frequency: Як часто надсилати підсумкові листи
|
|
@@ -1205,7 +1262,7 @@ uk:
|
|
|
1205
1262
|
source_code_context_lines: Рядків до та після цільового рядка
|
|
1206
1263
|
enable_git_blame: Показувати дані git blame
|
|
1207
1264
|
source_code_cache_ttl: Тривалість кешування вихідного коду
|
|
1208
|
-
only_show_app_code_source:
|
|
1265
|
+
only_show_app_code_source: "Приховувати код гемів і vendor у переглядачі коду"
|
|
1209
1266
|
git_branch_strategy: Стратегія визначення гілки
|
|
1210
1267
|
enable_breadcrumbs: Захоплювати послідовність дій у запиті
|
|
1211
1268
|
breadcrumb_buffer_size: Максимум breadcrumbs на запит
|
|
@@ -1236,6 +1293,7 @@ uk:
|
|
|
1236
1293
|
enable_crash_capture: Хук at_exit для необроблених аварійних завершень
|
|
1237
1294
|
enable_coverage_tracking: Діагностичний режим — увімкніть через панель, щоб
|
|
1238
1295
|
бачити виконані рядки у перегляді коду (Ruby 3.2+)
|
|
1296
|
+
enable_missing_translation_tracking: "Рахує промахи I18n застосунку за локаллю та ключем (обгортає I18n.exception_handler)"
|
|
1239
1297
|
enable_rack_attack_tracking: Записувати події throttle/blocklist в окрему
|
|
1240
1298
|
таблицю
|
|
1241
1299
|
enable_actioncable_tracking: Відстежувати події каналів WebSocket як breadcrumbs
|
|
@@ -1295,6 +1353,8 @@ uk:
|
|
|
1295
1353
|
breadcrumbs: Breadcrumbs
|
|
1296
1354
|
system_health: Стан системи
|
|
1297
1355
|
swallowed_exceptions: Виявлення придушених винятків
|
|
1356
|
+
missing_translations: "Відстеження відсутніх перекладів"
|
|
1357
|
+
boot_errors: "Перехоплення помилок запуску"
|
|
1298
1358
|
rack_attack: Відстеження Rack Attack
|
|
1299
1359
|
actioncable: Відстеження ActionCable
|
|
1300
1360
|
activestorage: Відстеження ActiveStorage
|
|
@@ -1708,6 +1768,13 @@ uk:
|
|
|
1708
1768
|
guide_link: Посібник з ActionCable
|
|
1709
1769
|
activestorage:
|
|
1710
1770
|
title: Стан ActiveStorage
|
|
1771
|
+
probe:
|
|
1772
|
+
title: "Доступність сервісу"
|
|
1773
|
+
reachable: "Доступний"
|
|
1774
|
+
unreachable: "Недоступний"
|
|
1775
|
+
service: "Сервіс: %{name}"
|
|
1776
|
+
latency: "%{ms} мс туди й назад"
|
|
1777
|
+
how: "Одна перевірка існування ключа, який ніколи не зберігається, під час завантаження цієї сторінки. GET /health виконує ту саму перевірку."
|
|
1711
1778
|
empty:
|
|
1712
1779
|
title: Подій ActiveStorage не знайдено
|
|
1713
1780
|
message: За останні %{days} днів у breadcrumbs помилок не виявлено операцій
|