rails_error_dashboard 0.15.0 → 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 +7 -3
- data/app/controllers/rails_error_dashboard/errors_controller.rb +29 -2
- data/app/controllers/rails_error_dashboard/webhooks_controller.rb +10 -9
- data/app/helpers/rails_error_dashboard/backtrace_helper.rb +7 -14
- data/app/helpers/rails_error_dashboard/overview_helper.rb +4 -0
- data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +5 -0
- data/app/models/rails_error_dashboard/error_log.rb +11 -8
- 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/views/layouts/rails_error_dashboard.html.erb +3 -1
- data/app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb +45 -0
- data/app/views/rails_error_dashboard/errors/_error_info.html.erb +10 -3
- data/app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb +12 -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.html.erb +6 -5
- data/app/views/rails_error_dashboard/errors/show.html.erb +7 -4
- data/config/locales/de.yml +19 -0
- data/config/locales/en.yml +21 -0
- data/config/locales/es.yml +20 -0
- data/config/locales/fr.yml +20 -0
- data/config/locales/it.yml +20 -0
- data/config/locales/ja.yml +18 -0
- data/config/locales/pl.yml +21 -0
- data/config/locales/pt-BR.yml +20 -0
- data/config/locales/ru.yml +21 -0
- data/config/locales/uk.yml +21 -0
- data/config/locales/zh-CN.yml +18 -0
- data/db/migrate/20260106094256_backfill_application_for_existing_errors.rb +3 -3
- 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/templates/initializer.rb +14 -5
- data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +11 -2
- data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +7 -2
- 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 +2 -4
- 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 +19 -7
- data/lib/rails_error_dashboard/commands/record_occurrence_context.rb +60 -0
- data/lib/rails_error_dashboard/configuration.rb +19 -3
- 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/queries/analytics_stats.rb +0 -12
- data/lib/rails_error_dashboard/queries/co_occurring_errors.rb +59 -33
- data/lib/rails_error_dashboard/queries/platform_comparison.rb +14 -6
- data/lib/rails_error_dashboard/services/backtrace_processor.rb +16 -7
- data/lib/rails_error_dashboard/services/crash_capture.rb +5 -0
- data/lib/rails_error_dashboard/services/github_link_generator.rb +1 -6
- data/lib/rails_error_dashboard/services/markdown_error_formatter.rb +15 -16
- data/lib/rails_error_dashboard/services/repository_url.rb +18 -0
- data/lib/rails_error_dashboard/services/similarity_calculator.rb +3 -9
- 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/value_objects/occurrence_snapshot.rb +23 -0
- data/lib/rails_error_dashboard/version.rb +1 -1
- data/lib/rails_error_dashboard.rb +16 -0
- data/lib/tasks/error_dashboard.rake +2 -3
- metadata +10 -2
data/config/locales/en.yml
CHANGED
|
@@ -82,6 +82,8 @@ en:
|
|
|
82
82
|
healthy: "✅ Healthy"
|
|
83
83
|
warning: "⚠️ Warning"
|
|
84
84
|
critical: "🔴 Critical"
|
|
85
|
+
not_rated: "Not rated"
|
|
86
|
+
not_rated_hint: "A rating compares platforms, so it needs errors on at least two."
|
|
85
87
|
|
|
86
88
|
# Device classes reported by the user-agent parser. Browser and OS names
|
|
87
89
|
# (Chrome, Safari, Windows, iOS) are brands and stay as written; these
|
|
@@ -379,6 +381,11 @@ en:
|
|
|
379
381
|
enable: "Enable"
|
|
380
382
|
disable: "Disable"
|
|
381
383
|
|
|
384
|
+
occurrence:
|
|
385
|
+
title: "Occurrence #%{id}"
|
|
386
|
+
body: "Breadcrumbs, system health and variables are from this occurrence. Everything else shows the latest capture."
|
|
387
|
+
show_latest: "Show latest"
|
|
388
|
+
|
|
382
389
|
baselines:
|
|
383
390
|
title: "Baseline Statistics"
|
|
384
391
|
# %{sigma} is a standard-deviation count, %{level} an anomaly level.
|
|
@@ -702,6 +709,15 @@ en:
|
|
|
702
709
|
other: "+%{count} more"
|
|
703
710
|
view_errors: "View Errors"
|
|
704
711
|
|
|
712
|
+
captured_occurrences:
|
|
713
|
+
title: "Captured occurrences"
|
|
714
|
+
hint: "Breadcrumbs, system health and variables are kept for the most recent occurrences (occurrence_context_limit). Open one to see them."
|
|
715
|
+
column_occurrence: "Occurrence"
|
|
716
|
+
column_occurred_at: "Occurred"
|
|
717
|
+
column_version: "Version"
|
|
718
|
+
view: "View"
|
|
719
|
+
viewing: "Viewing"
|
|
720
|
+
|
|
705
721
|
co_occurring:
|
|
706
722
|
title: "Co-occurring Errors"
|
|
707
723
|
badge: "Time Patterns"
|
|
@@ -1057,6 +1073,7 @@ en:
|
|
|
1057
1073
|
other: "%{count} frames"
|
|
1058
1074
|
click_to_expand: "(click to expand)"
|
|
1059
1075
|
view_source: "View Source"
|
|
1076
|
+
client_report_note: "These frames came from a client report (ManualErrorReporter). They describe code that ran on the client, so RED opens no source file, shows no snippet and runs no git blame for them."
|
|
1060
1077
|
none: "No backtrace available"
|
|
1061
1078
|
|
|
1062
1079
|
row:
|
|
@@ -1532,6 +1549,9 @@ en:
|
|
|
1532
1549
|
events:
|
|
1533
1550
|
one: "%{count} event"
|
|
1534
1551
|
other: "%{count} events"
|
|
1552
|
+
occurrences:
|
|
1553
|
+
one: "%{count} occurrence"
|
|
1554
|
+
other: "%{count} occurrences"
|
|
1535
1555
|
queries:
|
|
1536
1556
|
one: "%{count} query"
|
|
1537
1557
|
other: "%{count} queries"
|
|
@@ -1596,6 +1616,7 @@ en:
|
|
|
1596
1616
|
enable_middleware: "Catches unhandled exceptions"
|
|
1597
1617
|
enable_error_subscriber: "Subscribes to Rails error events"
|
|
1598
1618
|
retention_days: "Delete errors not seen for this many days. Enforced by RetentionCleanupJob, which nothing in the gem schedules"
|
|
1619
|
+
occurrence_context_limit: "How many recent occurrences per error keep their breadcrumbs, system health and variables (0 = off)"
|
|
1599
1620
|
max_backtrace_lines: "Stack trace depth limit"
|
|
1600
1621
|
sampling_rate: "Percentage of errors captured"
|
|
1601
1622
|
application_name: "Name of this application (auto-detected if not set)"
|
data/config/locales/es.yml
CHANGED
|
@@ -36,6 +36,8 @@ es:
|
|
|
36
36
|
healthy: "✅ Correcto"
|
|
37
37
|
warning: "⚠️ Advertencia"
|
|
38
38
|
critical: "\U0001F534 Crítico"
|
|
39
|
+
not_rated: "Sin calificar"
|
|
40
|
+
not_rated_hint: "La calificación compara plataformas, así que necesita errores en al menos dos."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Móvil
|
|
41
43
|
tablet: Tableta
|
|
@@ -247,6 +249,10 @@ es:
|
|
|
247
249
|
inactive_body: actívela para ver las líneas ejecutadas
|
|
248
250
|
enable: Activar
|
|
249
251
|
disable: Desactivar
|
|
252
|
+
occurrence:
|
|
253
|
+
title: "Aparición #%{id}"
|
|
254
|
+
body: "Los breadcrumbs, el estado del sistema y las variables provienen de esta aparición. Todo lo demás muestra la captura más reciente."
|
|
255
|
+
show_latest: "Ver la más reciente"
|
|
250
256
|
baselines:
|
|
251
257
|
title: Estadísticas de referencia
|
|
252
258
|
anomaly_label: 'Anomalía:'
|
|
@@ -519,6 +525,14 @@ es:
|
|
|
519
525
|
other: "+%{count} más"
|
|
520
526
|
many: "+%{count} más"
|
|
521
527
|
view_errors: Ver los errores
|
|
528
|
+
captured_occurrences:
|
|
529
|
+
title: "Apariciones capturadas"
|
|
530
|
+
hint: "Los breadcrumbs, el estado del sistema y las variables se conservan para las apariciones más recientes (occurrence_context_limit). Abra una para verlos."
|
|
531
|
+
column_occurrence: "Aparición"
|
|
532
|
+
column_occurred_at: "Ocurrió"
|
|
533
|
+
column_version: "Versión"
|
|
534
|
+
view: "Ver"
|
|
535
|
+
viewing: "En pantalla"
|
|
522
536
|
co_occurring:
|
|
523
537
|
title: Errores concurrentes
|
|
524
538
|
badge: Patrones temporales
|
|
@@ -769,6 +783,7 @@ es:
|
|
|
769
783
|
many: "%{count} frames"
|
|
770
784
|
click_to_expand: "(haga clic para desplegar)"
|
|
771
785
|
view_source: Ver el código fuente
|
|
786
|
+
client_report_note: "Estos frames provienen de un informe de cliente (ManualErrorReporter). Describen código que se ejecutó en el cliente, así que RED no abre archivos fuente, no muestra fragmentos ni ejecuta git blame para ellos."
|
|
772
787
|
none: No hay backtrace disponible
|
|
773
788
|
row:
|
|
774
789
|
new_badge: NUEVO
|
|
@@ -1138,6 +1153,10 @@ es:
|
|
|
1138
1153
|
one: "%{count} evento"
|
|
1139
1154
|
other: "%{count} eventos"
|
|
1140
1155
|
many: "%{count} eventos"
|
|
1156
|
+
occurrences:
|
|
1157
|
+
one: "%{count} aparición"
|
|
1158
|
+
other: "%{count} apariciones"
|
|
1159
|
+
many: "%{count} apariciones"
|
|
1141
1160
|
queries:
|
|
1142
1161
|
one: "%{count} consulta"
|
|
1143
1162
|
other: "%{count} consultas"
|
|
@@ -1187,6 +1206,7 @@ es:
|
|
|
1187
1206
|
enable_middleware: Captura las excepciones no gestionadas
|
|
1188
1207
|
enable_error_subscriber: Se suscribe a los eventos de error de Rails
|
|
1189
1208
|
retention_days: "Eliminar errores no vistos durante estos días. Lo aplica RetentionCleanupJob, que la gema no programa por sí misma"
|
|
1209
|
+
occurrence_context_limit: "Cuántas apariciones recientes por error conservan sus breadcrumbs, estado del sistema y variables (0 = desactivado)"
|
|
1190
1210
|
max_backtrace_lines: Profundidad máxima del backtrace
|
|
1191
1211
|
sampling_rate: Porcentaje de errores capturados
|
|
1192
1212
|
application_name: Nombre de esta aplicación (se detecta automáticamente si
|
data/config/locales/fr.yml
CHANGED
|
@@ -36,6 +36,8 @@ fr:
|
|
|
36
36
|
healthy: "✅ Sain"
|
|
37
37
|
warning: "⚠️ Avertissement"
|
|
38
38
|
critical: "\U0001F534 Critique"
|
|
39
|
+
not_rated: "Non évalué"
|
|
40
|
+
not_rated_hint: "L'évaluation compare les plateformes : il faut des erreurs sur au moins deux."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobile
|
|
41
43
|
tablet: Tablette
|
|
@@ -249,6 +251,10 @@ fr:
|
|
|
249
251
|
inactive_body: activez pour voir les lignes exécutées
|
|
250
252
|
enable: Activer
|
|
251
253
|
disable: Désactiver
|
|
254
|
+
occurrence:
|
|
255
|
+
title: "Occurrence #%{id}"
|
|
256
|
+
body: "Les breadcrumbs, l'état du système et les variables proviennent de cette occurrence. Tout le reste montre la capture la plus récente."
|
|
257
|
+
show_latest: "Voir la plus récente"
|
|
252
258
|
baselines:
|
|
253
259
|
title: Statistiques de référence
|
|
254
260
|
anomaly_label: 'Anomalie :'
|
|
@@ -519,6 +525,14 @@ fr:
|
|
|
519
525
|
other: "+%{count} autres"
|
|
520
526
|
many: "+%{count} autres"
|
|
521
527
|
view_errors: Voir les erreurs
|
|
528
|
+
captured_occurrences:
|
|
529
|
+
title: "Occurrences capturées"
|
|
530
|
+
hint: "Les breadcrumbs, l'état du système et les variables sont conservés pour les occurrences les plus récentes (occurrence_context_limit). Ouvrez-en une pour les voir."
|
|
531
|
+
column_occurrence: "Occurrence"
|
|
532
|
+
column_occurred_at: "Survenue"
|
|
533
|
+
column_version: "Version"
|
|
534
|
+
view: "Voir"
|
|
535
|
+
viewing: "Affichée"
|
|
522
536
|
co_occurring:
|
|
523
537
|
title: Erreurs concomitantes
|
|
524
538
|
badge: Motifs temporels
|
|
@@ -768,6 +782,7 @@ fr:
|
|
|
768
782
|
many: "%{count} frames"
|
|
769
783
|
click_to_expand: "(cliquez pour développer)"
|
|
770
784
|
view_source: Voir le code source
|
|
785
|
+
client_report_note: "Ces frames proviennent d'un rapport client (ManualErrorReporter). Ils décrivent du code exécuté côté client : RED n'ouvre donc aucun fichier source, n'affiche aucun extrait et n'exécute pas git blame pour eux."
|
|
771
786
|
none: Aucun backtrace disponible
|
|
772
787
|
row:
|
|
773
788
|
new_badge: NOUVEAU
|
|
@@ -1139,6 +1154,10 @@ fr:
|
|
|
1139
1154
|
one: "%{count} événement"
|
|
1140
1155
|
other: "%{count} événements"
|
|
1141
1156
|
many: "%{count} événements"
|
|
1157
|
+
occurrences:
|
|
1158
|
+
one: "%{count} occurrence"
|
|
1159
|
+
other: "%{count} occurrences"
|
|
1160
|
+
many: "%{count} occurrences"
|
|
1142
1161
|
queries:
|
|
1143
1162
|
one: "%{count} requête"
|
|
1144
1163
|
other: "%{count} requêtes"
|
|
@@ -1188,6 +1207,7 @@ fr:
|
|
|
1188
1207
|
enable_middleware: Intercepte les exceptions non gérées
|
|
1189
1208
|
enable_error_subscriber: S'abonne aux événements d'erreur de Rails
|
|
1190
1209
|
retention_days: "Supprimer les erreurs non vues depuis ce nombre de jours. Appliqué par RetentionCleanupJob, que la gem ne planifie pas elle-même"
|
|
1210
|
+
occurrence_context_limit: "Nombre d'occurrences récentes par erreur dont les breadcrumbs, l'état du système et les variables sont conservés (0 = désactivé)"
|
|
1191
1211
|
max_backtrace_lines: Profondeur maximale du backtrace
|
|
1192
1212
|
sampling_rate: Pourcentage d'erreurs capturées
|
|
1193
1213
|
application_name: Nom de cette application (détecté automatiquement si non
|
data/config/locales/it.yml
CHANGED
|
@@ -36,6 +36,8 @@ it:
|
|
|
36
36
|
healthy: "✅ Integro"
|
|
37
37
|
warning: "⚠️ Avviso"
|
|
38
38
|
critical: "\U0001F534 Critico"
|
|
39
|
+
not_rated: "Non valutato"
|
|
40
|
+
not_rated_hint: "La valutazione confronta le piattaforme, quindi servono errori su almeno due."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobile
|
|
41
43
|
tablet: Tablet
|
|
@@ -246,6 +248,10 @@ it:
|
|
|
246
248
|
inactive_body: abilita per vedere le righe eseguite
|
|
247
249
|
enable: Abilita
|
|
248
250
|
disable: Disabilita
|
|
251
|
+
occurrence:
|
|
252
|
+
title: "Occorrenza #%{id}"
|
|
253
|
+
body: "Breadcrumbs, stato del sistema e variabili provengono da questa occorrenza. Tutto il resto mostra l'acquisizione più recente."
|
|
254
|
+
show_latest: "Mostra la più recente"
|
|
249
255
|
baselines:
|
|
250
256
|
title: Statistiche della baseline
|
|
251
257
|
anomaly_label: 'Anomalia:'
|
|
@@ -513,6 +519,14 @@ it:
|
|
|
513
519
|
other: "+%{count} altri"
|
|
514
520
|
many: "+%{count} altri"
|
|
515
521
|
view_errors: Vedi gli errori
|
|
522
|
+
captured_occurrences:
|
|
523
|
+
title: "Occorrenze acquisite"
|
|
524
|
+
hint: "Breadcrumbs, stato del sistema e variabili vengono conservati per le occorrenze più recenti (occurrence_context_limit). Aprine una per vederli."
|
|
525
|
+
column_occurrence: "Occorrenza"
|
|
526
|
+
column_occurred_at: "Avvenuta"
|
|
527
|
+
column_version: "Versione"
|
|
528
|
+
view: "Visualizza"
|
|
529
|
+
viewing: "In visualizzazione"
|
|
516
530
|
co_occurring:
|
|
517
531
|
title: Errori concomitanti
|
|
518
532
|
badge: Schemi temporali
|
|
@@ -761,6 +775,7 @@ it:
|
|
|
761
775
|
many: "%{count} frame"
|
|
762
776
|
click_to_expand: "(clicca per espandere)"
|
|
763
777
|
view_source: Vedi il codice
|
|
778
|
+
client_report_note: "Questi frame provengono da una segnalazione del client (ManualErrorReporter). Descrivono codice eseguito sul client, quindi RED non apre file sorgente, non mostra estratti e non esegue git blame per essi."
|
|
764
779
|
none: Backtrace non disponibile
|
|
765
780
|
row:
|
|
766
781
|
new_badge: NUOVO
|
|
@@ -1129,6 +1144,10 @@ it:
|
|
|
1129
1144
|
one: "%{count} evento"
|
|
1130
1145
|
other: "%{count} eventi"
|
|
1131
1146
|
many: "%{count} eventi"
|
|
1147
|
+
occurrences:
|
|
1148
|
+
one: "%{count} occorrenza"
|
|
1149
|
+
other: "%{count} occorrenze"
|
|
1150
|
+
many: "%{count} occorrenze"
|
|
1132
1151
|
queries:
|
|
1133
1152
|
one: "%{count} query"
|
|
1134
1153
|
other: "%{count} query"
|
|
@@ -1178,6 +1197,7 @@ it:
|
|
|
1178
1197
|
enable_middleware: Intercetta le eccezioni non gestite
|
|
1179
1198
|
enable_error_subscriber: Si iscrive agli eventi di errore di Rails
|
|
1180
1199
|
retention_days: "Elimina gli errori non visti da questo numero di giorni. Applicato da RetentionCleanupJob, che la gem non pianifica da sola"
|
|
1200
|
+
occurrence_context_limit: "Quante occorrenze recenti per errore conservano breadcrumbs, stato del sistema e variabili (0 = disattivato)"
|
|
1181
1201
|
max_backtrace_lines: Limite di profondità dello stack trace
|
|
1182
1202
|
sampling_rate: Percentuale di errori acquisiti
|
|
1183
1203
|
application_name: Nome di questa applicazione (rilevato automaticamente se
|
data/config/locales/ja.yml
CHANGED
|
@@ -36,6 +36,8 @@ ja:
|
|
|
36
36
|
healthy: "✅ 正常"
|
|
37
37
|
warning: "⚠️ 警告"
|
|
38
38
|
critical: "\U0001F534 重大"
|
|
39
|
+
not_rated: "評価なし"
|
|
40
|
+
not_rated_hint: "評価はプラットフォーム同士の比較なので、2つ以上のプラットフォームのエラーが必要です。"
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: モバイル
|
|
41
43
|
tablet: タブレット
|
|
@@ -233,6 +235,10 @@ ja:
|
|
|
233
235
|
inactive_body: 有効にすると実行された行を確認できます
|
|
234
236
|
enable: 有効にする
|
|
235
237
|
disable: 無効にする
|
|
238
|
+
occurrence:
|
|
239
|
+
title: "発生 #%{id}"
|
|
240
|
+
body: "Breadcrumb、システムヘルス、変数はこの発生時のものです。それ以外は最新のキャプチャを表示しています。"
|
|
241
|
+
show_latest: "最新を表示"
|
|
236
242
|
baselines:
|
|
237
243
|
title: ベースライン統計
|
|
238
244
|
anomaly_label: '異常:'
|
|
@@ -454,6 +460,14 @@ ja:
|
|
|
454
460
|
more:
|
|
455
461
|
other: 他%{count}件
|
|
456
462
|
view_errors: エラーを表示
|
|
463
|
+
captured_occurrences:
|
|
464
|
+
title: "記録された発生"
|
|
465
|
+
hint: "Breadcrumb、システムヘルス、変数は最新の発生分だけ保持されます(occurrence_context_limit)。発生を開くと確認できます。"
|
|
466
|
+
column_occurrence: "発生"
|
|
467
|
+
column_occurred_at: "発生日時"
|
|
468
|
+
column_version: "バージョン"
|
|
469
|
+
view: "表示"
|
|
470
|
+
viewing: "表示中"
|
|
457
471
|
co_occurring:
|
|
458
472
|
title: 同時発生エラー
|
|
459
473
|
badge: 時間パターン
|
|
@@ -682,6 +696,7 @@ ja:
|
|
|
682
696
|
other: "%{count}フレーム"
|
|
683
697
|
click_to_expand: "(クリックで展開)"
|
|
684
698
|
view_source: ソースを表示
|
|
699
|
+
client_report_note: "これらのフレームはクライアントからの報告(ManualErrorReporter)によるものです。クライアント側で実行されたコードを示すため、RED はソースファイルを開かず、コード片の表示や git blame も行いません。"
|
|
685
700
|
none: Backtrace はありません
|
|
686
701
|
row:
|
|
687
702
|
new_badge: NEW
|
|
@@ -991,6 +1006,8 @@ ja:
|
|
|
991
1006
|
other: "%{count}秒"
|
|
992
1007
|
events:
|
|
993
1008
|
other: "%{count}件のイベント"
|
|
1009
|
+
occurrences:
|
|
1010
|
+
other: "%{count}件の発生"
|
|
994
1011
|
queries:
|
|
995
1012
|
other: "%{count}クエリ"
|
|
996
1013
|
std_devs: "%{count}σ"
|
|
@@ -1030,6 +1047,7 @@ ja:
|
|
|
1030
1047
|
enable_middleware: 未処理の例外を捕捉します
|
|
1031
1048
|
enable_error_subscriber: Rails のエラーイベントを購読します
|
|
1032
1049
|
retention_days: "この日数の間発生しなかったエラーを削除します。RetentionCleanupJob が実行しますが、gem 自体はスケジュールしません"
|
|
1050
|
+
occurrence_context_limit: "エラーごとに Breadcrumb、システムヘルス、変数を保持する最新の発生数(0 = 無効)"
|
|
1033
1051
|
max_backtrace_lines: スタックトレースの深さの上限
|
|
1034
1052
|
sampling_rate: エラーを記録する割合
|
|
1035
1053
|
application_name: このアプリケーションの名前 (未設定の場合は自動検出)
|
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
|
|
@@ -248,6 +250,10 @@ pl:
|
|
|
248
250
|
inactive_body: włącz, aby zobaczyć wykonane linie
|
|
249
251
|
enable: Włącz
|
|
250
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"
|
|
251
257
|
baselines:
|
|
252
258
|
title: Statystyki poziomu bazowego
|
|
253
259
|
anomaly_label: 'Anomalia:'
|
|
@@ -520,6 +526,14 @@ pl:
|
|
|
520
526
|
few: "+%{count} więcej"
|
|
521
527
|
many: "+%{count} więcej"
|
|
522
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"
|
|
523
537
|
co_occurring:
|
|
524
538
|
title: Współwystępujące błędy
|
|
525
539
|
badge: Wzorce czasowe
|
|
@@ -774,6 +788,7 @@ pl:
|
|
|
774
788
|
many: "%{count} ramek"
|
|
775
789
|
click_to_expand: "(kliknij, aby rozwinąć)"
|
|
776
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."
|
|
777
792
|
none: Backtrace niedostępny
|
|
778
793
|
row:
|
|
779
794
|
new_badge: NOWY
|
|
@@ -1154,6 +1169,11 @@ pl:
|
|
|
1154
1169
|
other: "%{count} zdarzenia"
|
|
1155
1170
|
few: "%{count} zdarzenia"
|
|
1156
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ń"
|
|
1157
1177
|
queries:
|
|
1158
1178
|
one: "%{count} zapytanie"
|
|
1159
1179
|
other: "%{count} zapytania"
|
|
@@ -1208,6 +1228,7 @@ pl:
|
|
|
1208
1228
|
enable_middleware: Przechwytuje nieobsłużone wyjątki
|
|
1209
1229
|
enable_error_subscriber: Subskrybuje zdarzenia błędów Rails
|
|
1210
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)"
|
|
1211
1232
|
max_backtrace_lines: Limit głębokości śladu stosu
|
|
1212
1233
|
sampling_rate: Odsetek przechwytywanych błędów
|
|
1213
1234
|
application_name: Nazwa tej aplikacji (wykrywana automatycznie, jeśli nie
|
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
|
|
@@ -247,6 +249,10 @@ pt-BR:
|
|
|
247
249
|
inactive_body: ative para ver as linhas executadas
|
|
248
250
|
enable: Ativar
|
|
249
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"
|
|
250
256
|
baselines:
|
|
251
257
|
title: Estatísticas de referência
|
|
252
258
|
anomaly_label: 'Anomalia:'
|
|
@@ -519,6 +525,14 @@ pt-BR:
|
|
|
519
525
|
other: "+%{count} outros"
|
|
520
526
|
many: "+%{count} outros"
|
|
521
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"
|
|
522
536
|
co_occurring:
|
|
523
537
|
title: Erros concomitantes
|
|
524
538
|
badge: Padrões temporais
|
|
@@ -767,6 +781,7 @@ pt-BR:
|
|
|
767
781
|
many: "%{count} frames"
|
|
768
782
|
click_to_expand: "(clique para expandir)"
|
|
769
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."
|
|
770
785
|
none: Nenhum backtrace disponível
|
|
771
786
|
row:
|
|
772
787
|
new_badge: NOVO
|
|
@@ -1133,6 +1148,10 @@ pt-BR:
|
|
|
1133
1148
|
one: "%{count} evento"
|
|
1134
1149
|
other: "%{count} eventos"
|
|
1135
1150
|
many: "%{count} eventos"
|
|
1151
|
+
occurrences:
|
|
1152
|
+
one: "%{count} ocorrência"
|
|
1153
|
+
other: "%{count} ocorrências"
|
|
1154
|
+
many: "%{count} ocorrências"
|
|
1136
1155
|
queries:
|
|
1137
1156
|
one: "%{count} consulta"
|
|
1138
1157
|
other: "%{count} consultas"
|
|
@@ -1182,6 +1201,7 @@ pt-BR:
|
|
|
1182
1201
|
enable_middleware: Captura exceções não tratadas
|
|
1183
1202
|
enable_error_subscriber: Assina os eventos de erro do Rails
|
|
1184
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)"
|
|
1185
1205
|
max_backtrace_lines: Profundidade máxima do backtrace
|
|
1186
1206
|
sampling_rate: Porcentagem de erros capturados
|
|
1187
1207
|
application_name: Nome desta aplicação (detectado automaticamente se não for
|
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: Планшет
|
|
@@ -248,6 +250,10 @@ ru:
|
|
|
248
250
|
inactive_body: включите, чтобы видеть выполненные строки
|
|
249
251
|
enable: Включить
|
|
250
252
|
disable: Отключить
|
|
253
|
+
occurrence:
|
|
254
|
+
title: "Событие #%{id}"
|
|
255
|
+
body: "Breadcrumbs, состояние системы и переменные относятся к этому событию. Всё остальное показывает последний захват."
|
|
256
|
+
show_latest: "Показать последнее"
|
|
251
257
|
baselines:
|
|
252
258
|
title: Статистика базовой линии
|
|
253
259
|
anomaly_label: 'Аномалия:'
|
|
@@ -523,6 +529,14 @@ ru:
|
|
|
523
529
|
few: "+ ещё %{count}"
|
|
524
530
|
many: "+ ещё %{count}"
|
|
525
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: "Открыто"
|
|
526
540
|
co_occurring:
|
|
527
541
|
title: Сопутствующие ошибки
|
|
528
542
|
badge: Временные закономерности
|
|
@@ -777,6 +791,7 @@ ru:
|
|
|
777
791
|
many: "%{count} кадров"
|
|
778
792
|
click_to_expand: "(нажмите, чтобы развернуть)"
|
|
779
793
|
view_source: Смотреть исходный код
|
|
794
|
+
client_report_note: "Эти фреймы пришли из отчёта клиента (ManualErrorReporter). Они описывают код, выполнявшийся на клиенте, поэтому RED не открывает для них исходные файлы, не показывает фрагменты и не запускает git blame."
|
|
780
795
|
none: Backtrace недоступен
|
|
781
796
|
row:
|
|
782
797
|
new_badge: НОВАЯ
|
|
@@ -1157,6 +1172,11 @@ ru:
|
|
|
1157
1172
|
other: "%{count} события"
|
|
1158
1173
|
few: "%{count} события"
|
|
1159
1174
|
many: "%{count} событий"
|
|
1175
|
+
occurrences:
|
|
1176
|
+
one: "%{count} событие"
|
|
1177
|
+
other: "%{count} события"
|
|
1178
|
+
few: "%{count} события"
|
|
1179
|
+
many: "%{count} событий"
|
|
1160
1180
|
queries:
|
|
1161
1181
|
one: "%{count} запрос"
|
|
1162
1182
|
other: "%{count} запроса"
|
|
@@ -1211,6 +1231,7 @@ ru:
|
|
|
1211
1231
|
enable_middleware: Перехватывает необработанные исключения
|
|
1212
1232
|
enable_error_subscriber: Подписывается на события ошибок Rails
|
|
1213
1233
|
retention_days: "Удалять ошибки, не встречавшиеся столько дней. Выполняет RetentionCleanupJob, который гем сам не планирует"
|
|
1234
|
+
occurrence_context_limit: "Сколько последних событий каждой ошибки сохраняют breadcrumbs, состояние системы и переменные (0 = выключено)"
|
|
1214
1235
|
max_backtrace_lines: Ограничение глубины backtrace
|
|
1215
1236
|
sampling_rate: Доля захватываемых ошибок
|
|
1216
1237
|
application_name: Имя этого приложения (определяется автоматически, если не
|
data/config/locales/uk.yml
CHANGED
|
@@ -36,6 +36,8 @@ uk:
|
|
|
36
36
|
healthy: "✅ Справний"
|
|
37
37
|
warning: "⚠️ Попередження"
|
|
38
38
|
critical: "\U0001F534 Критичний"
|
|
39
|
+
not_rated: "Без оцінки"
|
|
40
|
+
not_rated_hint: "Оцінка порівнює платформи, тому потрібні помилки щонайменше на двох."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobile
|
|
41
43
|
tablet: Tablet
|
|
@@ -248,6 +250,10 @@ uk:
|
|
|
248
250
|
inactive_body: увімкніть, щоб бачити виконані рядки
|
|
249
251
|
enable: Увімкнути
|
|
250
252
|
disable: Вимкнути
|
|
253
|
+
occurrence:
|
|
254
|
+
title: "Подія #%{id}"
|
|
255
|
+
body: "Breadcrumbs, стан системи та змінні належать до цієї події. Усе інше показує останнє захоплення."
|
|
256
|
+
show_latest: "Показати останню"
|
|
251
257
|
baselines:
|
|
252
258
|
title: Статистика базового рівня
|
|
253
259
|
anomaly_label: 'Аномалія:'
|
|
@@ -520,6 +526,14 @@ uk:
|
|
|
520
526
|
few: "+%{count} ще"
|
|
521
527
|
many: "+%{count} ще"
|
|
522
528
|
view_errors: Переглянути помилки
|
|
529
|
+
captured_occurrences:
|
|
530
|
+
title: "Збережені події"
|
|
531
|
+
hint: "Breadcrumbs, стан системи та змінні зберігаються для останніх подій (occurrence_context_limit). Відкрийте подію, щоб їх побачити."
|
|
532
|
+
column_occurrence: "Подія"
|
|
533
|
+
column_occurred_at: "Час"
|
|
534
|
+
column_version: "Версія"
|
|
535
|
+
view: "Відкрити"
|
|
536
|
+
viewing: "Відкрито"
|
|
523
537
|
co_occurring:
|
|
524
538
|
title: Супутні помилки
|
|
525
539
|
badge: Часові закономірності
|
|
@@ -775,6 +789,7 @@ uk:
|
|
|
775
789
|
many: "%{count} кадрів"
|
|
776
790
|
click_to_expand: "(натисніть, щоб розгорнути)"
|
|
777
791
|
view_source: Переглянути код
|
|
792
|
+
client_report_note: "Ці фрейми надійшли зі звіту клієнта (ManualErrorReporter). Вони описують код, що виконувався на клієнті, тому RED не відкриває для них вихідні файли, не показує фрагменти й не запускає git blame."
|
|
778
793
|
none: Backtrace недоступний
|
|
779
794
|
row:
|
|
780
795
|
new_badge: НОВА
|
|
@@ -1153,6 +1168,11 @@ uk:
|
|
|
1153
1168
|
other: "%{count} події"
|
|
1154
1169
|
few: "%{count} події"
|
|
1155
1170
|
many: "%{count} подій"
|
|
1171
|
+
occurrences:
|
|
1172
|
+
one: "%{count} подія"
|
|
1173
|
+
other: "%{count} події"
|
|
1174
|
+
few: "%{count} події"
|
|
1175
|
+
many: "%{count} подій"
|
|
1156
1176
|
queries:
|
|
1157
1177
|
one: "%{count} запит"
|
|
1158
1178
|
other: "%{count} запита"
|
|
@@ -1207,6 +1227,7 @@ uk:
|
|
|
1207
1227
|
enable_middleware: Перехоплює необроблені винятки
|
|
1208
1228
|
enable_error_subscriber: Підписується на події помилок Rails
|
|
1209
1229
|
retention_days: "Видаляти помилки, яких не було стільки днів. Виконує RetentionCleanupJob, який гем сам не планує"
|
|
1230
|
+
occurrence_context_limit: "Скільки останніх подій кожної помилки зберігають breadcrumbs, стан системи та змінні (0 = вимкнено)"
|
|
1210
1231
|
max_backtrace_lines: Обмеження глибини стеку викликів
|
|
1211
1232
|
sampling_rate: Відсоток захоплених помилок
|
|
1212
1233
|
application_name: Назва цього застосунку (визначається автоматично, якщо не
|
data/config/locales/zh-CN.yml
CHANGED
|
@@ -36,6 +36,8 @@ zh-CN:
|
|
|
36
36
|
healthy: "✅ 正常"
|
|
37
37
|
warning: "⚠️ 警告"
|
|
38
38
|
critical: "\U0001F534 严重"
|
|
39
|
+
not_rated: "未评级"
|
|
40
|
+
not_rated_hint: "评级是在平台之间比较的,因此至少需要两个平台上的错误。"
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobile
|
|
41
43
|
tablet: Tablet
|
|
@@ -231,6 +233,10 @@ zh-CN:
|
|
|
231
233
|
inactive_body: 启用后可查看已执行的行
|
|
232
234
|
enable: 启用
|
|
233
235
|
disable: 停用
|
|
236
|
+
occurrence:
|
|
237
|
+
title: "发生 #%{id}"
|
|
238
|
+
body: "Breadcrumbs、系统状态和变量来自这次发生。其余内容显示最新一次捕获。"
|
|
239
|
+
show_latest: "查看最新"
|
|
234
240
|
baselines:
|
|
235
241
|
title: 基线统计
|
|
236
242
|
anomaly_label: 异常:
|
|
@@ -451,6 +457,14 @@ zh-CN:
|
|
|
451
457
|
more:
|
|
452
458
|
other: 另有 %{count} 项
|
|
453
459
|
view_errors: 查看错误
|
|
460
|
+
captured_occurrences:
|
|
461
|
+
title: "已捕获的发生记录"
|
|
462
|
+
hint: "仅为最近的发生保留 Breadcrumbs、系统状态和变量(occurrence_context_limit)。打开某一条即可查看。"
|
|
463
|
+
column_occurrence: "发生"
|
|
464
|
+
column_occurred_at: "发生时间"
|
|
465
|
+
column_version: "版本"
|
|
466
|
+
view: "查看"
|
|
467
|
+
viewing: "正在查看"
|
|
454
468
|
co_occurring:
|
|
455
469
|
title: 同时出现的错误
|
|
456
470
|
badge: 时间规律
|
|
@@ -679,6 +693,7 @@ zh-CN:
|
|
|
679
693
|
other: "%{count} 个栈帧"
|
|
680
694
|
click_to_expand: "(点击展开)"
|
|
681
695
|
view_source: 查看源码
|
|
696
|
+
client_report_note: "这些帧来自客户端报告(ManualErrorReporter)。它们描述的是在客户端运行的代码,因此 RED 不会为其打开源文件、显示代码片段或运行 git blame。"
|
|
682
697
|
none: 无可用的 backtrace
|
|
683
698
|
row:
|
|
684
699
|
new_badge: 新
|
|
@@ -986,6 +1001,8 @@ zh-CN:
|
|
|
986
1001
|
other: "%{count} 秒"
|
|
987
1002
|
events:
|
|
988
1003
|
other: "%{count} 个事件"
|
|
1004
|
+
occurrences:
|
|
1005
|
+
other: "%{count} 次发生"
|
|
989
1006
|
queries:
|
|
990
1007
|
other: "%{count} 条查询"
|
|
991
1008
|
std_devs: "%{count}σ"
|
|
@@ -1025,6 +1042,7 @@ zh-CN:
|
|
|
1025
1042
|
enable_middleware: 捕获未处理的异常
|
|
1026
1043
|
enable_error_subscriber: 订阅 Rails 错误事件
|
|
1027
1044
|
retention_days: "删除这么多天内未再出现的错误。由 RetentionCleanupJob 执行,gem 本身不会安排它运行"
|
|
1045
|
+
occurrence_context_limit: "每个错误保留 Breadcrumbs、系统状态和变量的最近发生次数(0 = 关闭)"
|
|
1028
1046
|
max_backtrace_lines: 堆栈跟踪深度上限
|
|
1029
1047
|
sampling_rate: 错误捕获的采样比例
|
|
1030
1048
|
application_name: 本应用的名称(未设置时自动检测)
|
|
@@ -3,9 +3,9 @@ class BackfillApplicationForExistingErrors < ActiveRecord::Migration[7.0]
|
|
|
3
3
|
return if RailsErrorDashboard::ErrorLog.count.zero?
|
|
4
4
|
|
|
5
5
|
# Create default application
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
# The name new errors are captured under, config.application_name first,
|
|
7
|
+
# so old and new errors land in the same Application
|
|
8
|
+
default_name = RailsErrorDashboard.resolved_application_name
|
|
9
9
|
|
|
10
10
|
app = RailsErrorDashboard::Application.find_or_create_by!(name: default_name) do |a|
|
|
11
11
|
a.description = 'Auto-created during migration for existing errors'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# The moment-of-failure context of individual occurrences: breadcrumbs, system
|
|
4
|
+
# health, local and instance variables, as the error row stores them for its
|
|
5
|
+
# latest capture. The error row keeps only the latest; this keeps the last
|
|
6
|
+
# config.occurrence_context_limit occurrences per error (default 25).
|
|
7
|
+
#
|
|
8
|
+
# A side table, not columns on error_occurrences: the co-occurrence queries
|
|
9
|
+
# load occurrence rows whole, and these payloads run to several KB.
|
|
10
|
+
class CreateRailsErrorDashboardErrorOccurrenceContexts < ActiveRecord::Migration[7.0]
|
|
11
|
+
def change
|
|
12
|
+
# Guard against the squashed schema migration having already created this
|
|
13
|
+
# table -- without it, every later migration is silently cancelled.
|
|
14
|
+
return if table_exists?(:rails_error_dashboard_error_occurrence_contexts)
|
|
15
|
+
|
|
16
|
+
create_table :rails_error_dashboard_error_occurrence_contexts do |t|
|
|
17
|
+
t.bigint :error_occurrence_id, null: false
|
|
18
|
+
# Denormalized from the occurrence, so trimming to the newest N per error
|
|
19
|
+
# and retention's delete-by-error need no join
|
|
20
|
+
t.bigint :error_log_id, null: false
|
|
21
|
+
t.text :breadcrumbs
|
|
22
|
+
t.text :system_health
|
|
23
|
+
t.text :local_variables
|
|
24
|
+
t.text :instance_variables
|
|
25
|
+
t.datetime :created_at, null: false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Named explicitly: an auto-generated name would exceed PostgreSQL's
|
|
29
|
+
# 63-character limit and fail during the HOST app's deploy.
|
|
30
|
+
add_index :rails_error_dashboard_error_occurrence_contexts, :error_occurrence_id,
|
|
31
|
+
unique: true, name: "index_red_occurrence_contexts_on_occurrence"
|
|
32
|
+
add_index :rails_error_dashboard_error_occurrence_contexts, :error_log_id,
|
|
33
|
+
name: "index_red_occurrence_contexts_on_error_log"
|
|
34
|
+
end
|
|
35
|
+
end
|