rails_error_dashboard 0.15.0 → 0.16.1

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -4
  3. data/app/controllers/rails_error_dashboard/errors_controller.rb +29 -2
  4. data/app/controllers/rails_error_dashboard/webhooks_controller.rb +10 -9
  5. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +7 -14
  6. data/app/helpers/rails_error_dashboard/overview_helper.rb +4 -0
  7. data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +5 -0
  8. data/app/models/rails_error_dashboard/error_log.rb +11 -8
  9. data/app/models/rails_error_dashboard/error_occurrence.rb +1 -0
  10. data/app/models/rails_error_dashboard/error_occurrence_context.rb +14 -0
  11. data/app/views/layouts/rails_error_dashboard.html.erb +3 -1
  12. data/app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb +45 -0
  13. data/app/views/rails_error_dashboard/errors/_error_info.html.erb +10 -3
  14. data/app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb +12 -0
  15. data/app/views/rails_error_dashboard/errors/correlation.html.erb +2 -2
  16. data/app/views/rails_error_dashboard/errors/overview.html.erb +14 -7
  17. data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +26 -17
  18. data/app/views/rails_error_dashboard/errors/settings.html.erb +6 -5
  19. data/app/views/rails_error_dashboard/errors/show.html.erb +7 -4
  20. data/config/locales/de.yml +21 -1
  21. data/config/locales/en.yml +23 -1
  22. data/config/locales/es.yml +22 -1
  23. data/config/locales/fr.yml +22 -1
  24. data/config/locales/it.yml +22 -1
  25. data/config/locales/ja.yml +20 -1
  26. data/config/locales/pl.yml +23 -1
  27. data/config/locales/pt-BR.yml +22 -1
  28. data/config/locales/ru.yml +23 -1
  29. data/config/locales/uk.yml +23 -1
  30. data/config/locales/zh-CN.yml +20 -1
  31. data/db/migrate/20260106094256_backfill_application_for_existing_errors.rb +3 -3
  32. data/db/migrate/20261015000001_create_rails_error_dashboard_error_occurrence_contexts.rb +35 -0
  33. data/db/migrate/20261015000002_add_capture_source_to_error_occurrences_and_error_logs.rb +46 -0
  34. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +14 -5
  35. data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +11 -2
  36. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +7 -2
  37. data/lib/rails_error_dashboard/commands/batch_unmute_errors.rb +7 -2
  38. data/lib/rails_error_dashboard/commands/find_or_increment_error.rb +6 -0
  39. data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +2 -4
  40. data/lib/rails_error_dashboard/commands/flush_rack_attack_events.rb +2 -4
  41. data/lib/rails_error_dashboard/commands/flush_storm_counts.rb +7 -6
  42. data/lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb +2 -4
  43. data/lib/rails_error_dashboard/commands/log_error.rb +19 -7
  44. data/lib/rails_error_dashboard/commands/record_occurrence_context.rb +60 -0
  45. data/lib/rails_error_dashboard/configuration.rb +26 -3
  46. data/lib/rails_error_dashboard/error_reporter.rb +4 -2
  47. data/lib/rails_error_dashboard/manual_error_reporter.rb +11 -1
  48. data/lib/rails_error_dashboard/middleware/error_catcher.rb +18 -4
  49. data/lib/rails_error_dashboard/queries/analytics_stats.rb +0 -12
  50. data/lib/rails_error_dashboard/queries/co_occurring_errors.rb +59 -33
  51. data/lib/rails_error_dashboard/queries/platform_comparison.rb +55 -18
  52. data/lib/rails_error_dashboard/services/backtrace_processor.rb +16 -7
  53. data/lib/rails_error_dashboard/services/crash_capture.rb +5 -0
  54. data/lib/rails_error_dashboard/services/github_link_generator.rb +1 -6
  55. data/lib/rails_error_dashboard/services/markdown_error_formatter.rb +15 -16
  56. data/lib/rails_error_dashboard/services/repository_url.rb +18 -0
  57. data/lib/rails_error_dashboard/services/similarity_calculator.rb +3 -9
  58. data/lib/rails_error_dashboard/services/storm_protection/count_buffer.rb +6 -3
  59. data/lib/rails_error_dashboard/services/storm_protection/gate.rb +6 -1
  60. data/lib/rails_error_dashboard/value_objects/occurrence_snapshot.rb +23 -0
  61. data/lib/rails_error_dashboard/version.rb +1 -1
  62. data/lib/rails_error_dashboard.rb +16 -0
  63. data/lib/tasks/error_dashboard.rake +2 -3
  64. metadata +10 -2
@@ -1,3 +1,3 @@
1
1
  module RailsErrorDashboard
2
- VERSION = "0.15.0"
2
+ VERSION = "0.16.1"
3
3
  end
@@ -23,6 +23,7 @@ begin; require "turbo-rails"; rescue LoadError; end
23
23
  # Core library files
24
24
  require "rails_error_dashboard/value_objects/error_context"
25
25
  require "rails_error_dashboard/value_objects/llm_call_event"
26
+ require "rails_error_dashboard/value_objects/occurrence_snapshot"
26
27
  require "rails_error_dashboard/integrations/o_tel"
27
28
  require "rails_error_dashboard/integrations/tracer"
28
29
  require "rails_error_dashboard/integrations/llm_span_processor"
@@ -59,6 +60,7 @@ require "rails_error_dashboard/services/source_code_reader"
59
60
  require "rails_error_dashboard/services/git_blame_reader"
60
61
  require "rails_error_dashboard/services/git_head_reader"
61
62
  require "rails_error_dashboard/services/solid_queue_config_check"
63
+ require "rails_error_dashboard/services/repository_url"
62
64
  require "rails_error_dashboard/services/github_link_generator"
63
65
  require "rails_error_dashboard/services/cause_chain_extractor"
64
66
  require "rails_error_dashboard/services/environment_snapshot"
@@ -116,6 +118,7 @@ require "rails_error_dashboard/queries/error_cascades"
116
118
  require "rails_error_dashboard/queries/baseline_stats"
117
119
  require "rails_error_dashboard/queries/platform_comparison"
118
120
  require "rails_error_dashboard/queries/error_correlation"
121
+ require "rails_error_dashboard/commands/record_occurrence_context"
119
122
  require "rails_error_dashboard/commands/log_error"
120
123
  require "rails_error_dashboard/commands/resolve_error"
121
124
  require "rails_error_dashboard/commands/create_issue"
@@ -226,6 +229,19 @@ module RailsErrorDashboard
226
229
  remove_instance_variable(:@detected_git_sha) if defined?(@detected_git_sha)
227
230
  end
228
231
 
232
+ # The name errors are filed under: config.application_name, then the
233
+ # APPLICATION_NAME variable, then the Rails app's module name. Capture, the
234
+ # storm and event flushers, and the backfill all use this one chain, or the
235
+ # same app's rows end up under two Applications, or under none.
236
+ #
237
+ # @return [String]
238
+ def self.resolved_application_name
239
+ configuration.application_name.presence ||
240
+ ENV["APPLICATION_NAME"].presence ||
241
+ (defined?(Rails) && Rails.application&.class&.module_parent_name) ||
242
+ "Rails Application"
243
+ end
244
+
229
245
  # Register a plugin
230
246
  # @param plugin [Plugin] The plugin instance to register
231
247
  # @return [Boolean] True if registered successfully, false otherwise
@@ -335,9 +335,8 @@ namespace :error_dashboard do
335
335
 
336
336
  desc "Backfill application_id for existing errors"
337
337
  task backfill_application: :environment do
338
- app_name = ENV["APP_NAME"] || ENV["APPLICATION_NAME"] ||
339
- (defined?(Rails) && Rails.application.class.module_parent_name) ||
340
- "Legacy Application"
338
+ # APP_NAME overrides; otherwise the name capture files new errors under
339
+ app_name = ENV["APP_NAME"].presence || RailsErrorDashboard.resolved_application_name
341
340
 
342
341
  puts "\n" + "=" * 80
343
342
  puts "RAILS ERROR DASHBOARD - BACKFILL APPLICATION"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_error_dashboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anjan Jagirdar
@@ -312,6 +312,7 @@ files:
312
312
  - app/models/rails_error_dashboard/error_log.rb
313
313
  - app/models/rails_error_dashboard/error_logs_record.rb
314
314
  - app/models/rails_error_dashboard/error_occurrence.rb
315
+ - app/models/rails_error_dashboard/error_occurrence_context.rb
315
316
  - app/models/rails_error_dashboard/event_count.rb
316
317
  - app/models/rails_error_dashboard/event_timing_gap.rb
317
318
  - app/models/rails_error_dashboard/missing_translation.rb
@@ -326,6 +327,7 @@ files:
326
327
  - app/views/rails_error_dashboard/error_notification_mailer/error_alert.text.erb
327
328
  - app/views/rails_error_dashboard/errors/_ai_help_panel.html.erb
328
329
  - app/views/rails_error_dashboard/errors/_breadcrumbs_group.html.erb
330
+ - app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb
329
331
  - app/views/rails_error_dashboard/errors/_co_occurring_errors.html.erb
330
332
  - app/views/rails_error_dashboard/errors/_discussion.html.erb
331
333
  - app/views/rails_error_dashboard/errors/_error_cascades.html.erb
@@ -336,6 +338,7 @@ files:
336
338
  - app/views/rails_error_dashboard/errors/_llm_summary.html.erb
337
339
  - app/views/rails_error_dashboard/errors/_local_variables.html.erb
338
340
  - app/views/rails_error_dashboard/errors/_modals.html.erb
341
+ - app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb
339
342
  - app/views/rails_error_dashboard/errors/_pattern_insights.html.erb
340
343
  - app/views/rails_error_dashboard/errors/_request_context.html.erb
341
344
  - app/views/rails_error_dashboard/errors/_show_scripts.html.erb
@@ -432,6 +435,8 @@ files:
432
435
  - db/migrate/20260920000001_add_buckets_incomplete_to_storm_events.rb
433
436
  - db/migrate/20260920000002_create_event_timing_gaps.rb
434
437
  - db/migrate/20261010000001_create_missing_translations.rb
438
+ - db/migrate/20261015000001_create_rails_error_dashboard_error_occurrence_contexts.rb
439
+ - db/migrate/20261015000002_add_capture_source_to_error_occurrences_and_error_logs.rb
435
440
  - lib/generators/rails_error_dashboard/install/install_generator.rb
436
441
  - lib/generators/rails_error_dashboard/install/templates/README
437
442
  - lib/generators/rails_error_dashboard/install/templates/initializer.rb
@@ -459,6 +464,7 @@ files:
459
464
  - lib/rails_error_dashboard/commands/link_existing_issue.rb
460
465
  - lib/rails_error_dashboard/commands/log_error.rb
461
466
  - lib/rails_error_dashboard/commands/mute_error.rb
467
+ - lib/rails_error_dashboard/commands/record_occurrence_context.rb
462
468
  - lib/rails_error_dashboard/commands/resolve_error.rb
463
469
  - lib/rails_error_dashboard/commands/scrub_invalid_encoding.rb
464
470
  - lib/rails_error_dashboard/commands/snooze_error.rb
@@ -573,6 +579,7 @@ files:
573
579
  - lib/rails_error_dashboard/services/platform_detector.rb
574
580
  - lib/rails_error_dashboard/services/priority_score_calculator.rb
575
581
  - lib/rails_error_dashboard/services/rack_attack_tracker.rb
582
+ - lib/rails_error_dashboard/services/repository_url.rb
576
583
  - lib/rails_error_dashboard/services/resolution_callbacks.rb
577
584
  - lib/rails_error_dashboard/services/rspec_generator.rb
578
585
  - lib/rails_error_dashboard/services/sensitive_data_filter.rb
@@ -605,6 +612,7 @@ files:
605
612
  - lib/rails_error_dashboard/translation.rb
606
613
  - lib/rails_error_dashboard/value_objects/error_context.rb
607
614
  - lib/rails_error_dashboard/value_objects/llm_call_event.rb
615
+ - lib/rails_error_dashboard/value_objects/occurrence_snapshot.rb
608
616
  - lib/rails_error_dashboard/version.rb
609
617
  - lib/tasks/error_dashboard.rake
610
618
  - lib/tasks/rails_error_dashboard_tasks.rake
@@ -620,7 +628,7 @@ metadata:
620
628
  funding_uri: https://github.com/sponsors/AnjanJ
621
629
  post_install_message: |
622
630
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
623
- RED (Rails Error Dashboard) v0.15.0
631
+ RED (Rails Error Dashboard) v0.16.1
624
632
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
625
633
 
626
634
  First install: