rails_error_dashboard 0.3.0 → 0.4.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +162 -834
  3. data/app/controllers/rails_error_dashboard/errors_controller.rb +140 -0
  4. data/app/jobs/rails_error_dashboard/swallowed_exception_flush_job.rb +32 -0
  5. data/app/models/rails_error_dashboard/diagnostic_dump.rb +14 -0
  6. data/app/models/rails_error_dashboard/swallowed_exception.rb +38 -0
  7. data/app/views/layouts/rails_error_dashboard.html.erb +33 -0
  8. data/app/views/rails_error_dashboard/errors/_instance_variables.html.erb +55 -0
  9. data/app/views/rails_error_dashboard/errors/_local_variables.html.erb +46 -0
  10. data/app/views/rails_error_dashboard/errors/_request_context.html.erb +18 -7
  11. data/app/views/rails_error_dashboard/errors/database_health_summary.html.erb +450 -0
  12. data/app/views/rails_error_dashboard/errors/diagnostic_dumps.html.erb +182 -0
  13. data/app/views/rails_error_dashboard/errors/job_health_summary.html.erb +152 -0
  14. data/app/views/rails_error_dashboard/errors/rack_attack_summary.html.erb +133 -0
  15. data/app/views/rails_error_dashboard/errors/show.html.erb +4 -0
  16. data/app/views/rails_error_dashboard/errors/swallowed_exceptions.html.erb +126 -0
  17. data/config/routes.rb +6 -0
  18. data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +33 -0
  19. data/db/migrate/20260306000001_add_local_variables_to_error_logs.rb +13 -0
  20. data/db/migrate/20260306000002_add_instance_variables_to_error_logs.rb +7 -0
  21. data/db/migrate/20260306000003_create_rails_error_dashboard_swallowed_exceptions.rb +34 -0
  22. data/db/migrate/20260307000001_create_rails_error_dashboard_diagnostic_dumps.rb +17 -0
  23. data/lib/generators/rails_error_dashboard/install/install_generator.rb +32 -0
  24. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +47 -0
  25. data/lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb +103 -0
  26. data/lib/rails_error_dashboard/commands/log_error.rb +68 -0
  27. data/lib/rails_error_dashboard/configuration.rb +122 -0
  28. data/lib/rails_error_dashboard/engine.rb +24 -0
  29. data/lib/rails_error_dashboard/queries/dashboard_stats.rb +32 -11
  30. data/lib/rails_error_dashboard/queries/database_health_summary.rb +82 -0
  31. data/lib/rails_error_dashboard/queries/job_health_summary.rb +101 -0
  32. data/lib/rails_error_dashboard/queries/rack_attack_summary.rb +90 -0
  33. data/lib/rails_error_dashboard/queries/swallowed_exception_summary.rb +97 -0
  34. data/lib/rails_error_dashboard/services/breadcrumb_collector.rb +12 -0
  35. data/lib/rails_error_dashboard/services/crash_capture.rb +234 -0
  36. data/lib/rails_error_dashboard/services/database_health_inspector.rb +168 -0
  37. data/lib/rails_error_dashboard/services/diagnostic_dump_generator.rb +98 -0
  38. data/lib/rails_error_dashboard/services/local_variable_capturer.rb +207 -0
  39. data/lib/rails_error_dashboard/services/rspec_generator.rb +145 -0
  40. data/lib/rails_error_dashboard/services/swallowed_exception_tracker.rb +277 -0
  41. data/lib/rails_error_dashboard/services/variable_serializer.rb +326 -0
  42. data/lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb +94 -0
  43. data/lib/rails_error_dashboard/version.rb +1 -1
  44. data/lib/rails_error_dashboard.rb +13 -0
  45. data/lib/tasks/error_dashboard.rake +34 -0
  46. metadata +29 -2
@@ -54,8 +54,16 @@ require "rails_error_dashboard/services/notification_throttler"
54
54
  require "rails_error_dashboard/services/breadcrumb_collector"
55
55
  require "rails_error_dashboard/services/n_plus_one_detector"
56
56
  require "rails_error_dashboard/services/curl_generator"
57
+ require "rails_error_dashboard/services/rspec_generator"
58
+ require "rails_error_dashboard/services/database_health_inspector"
57
59
  require "rails_error_dashboard/services/cache_analyzer"
60
+ require "rails_error_dashboard/services/variable_serializer"
61
+ require "rails_error_dashboard/services/local_variable_capturer"
62
+ require "rails_error_dashboard/services/swallowed_exception_tracker"
63
+ require "rails_error_dashboard/services/crash_capture"
64
+ require "rails_error_dashboard/services/diagnostic_dump_generator"
58
65
  require "rails_error_dashboard/subscribers/breadcrumb_subscriber"
66
+ require "rails_error_dashboard/subscribers/rack_attack_subscriber"
59
67
  require "rails_error_dashboard/queries/co_occurring_errors"
60
68
  require "rails_error_dashboard/queries/error_cascades"
61
69
  require "rails_error_dashboard/queries/baseline_stats"
@@ -78,6 +86,7 @@ require "rails_error_dashboard/commands/find_or_increment_error"
78
86
  require "rails_error_dashboard/commands/find_or_create_application"
79
87
  require "rails_error_dashboard/commands/upsert_cascade_pattern"
80
88
  require "rails_error_dashboard/commands/upsert_baseline"
89
+ require "rails_error_dashboard/commands/flush_swallowed_exceptions"
81
90
  require "rails_error_dashboard/queries/errors_list"
82
91
  require "rails_error_dashboard/queries/dashboard_stats"
83
92
  require "rails_error_dashboard/queries/analytics_stats"
@@ -89,6 +98,10 @@ require "rails_error_dashboard/queries/critical_alerts"
89
98
  require "rails_error_dashboard/queries/deprecation_warnings"
90
99
  require "rails_error_dashboard/queries/n_plus_one_summary"
91
100
  require "rails_error_dashboard/queries/cache_health_summary"
101
+ require "rails_error_dashboard/queries/job_health_summary"
102
+ require "rails_error_dashboard/queries/database_health_summary"
103
+ require "rails_error_dashboard/queries/swallowed_exception_summary"
104
+ require "rails_error_dashboard/queries/rack_attack_summary"
92
105
  require "rails_error_dashboard/error_reporter"
93
106
  require "rails_error_dashboard/middleware/error_catcher"
94
107
  require "rails_error_dashboard/middleware/rate_limiter"
@@ -444,6 +444,40 @@ namespace :error_dashboard do
444
444
  puts "\n" + "=" * 80 + "\n"
445
445
  end
446
446
 
447
+ desc "Capture diagnostic dump of current system state"
448
+ task diagnostic_dump: :environment do
449
+ unless RailsErrorDashboard.configuration.enable_diagnostic_dump
450
+ puts "\n Diagnostic dumps are not enabled."
451
+ puts " Set config.enable_diagnostic_dump = true in your initializer."
452
+ next
453
+ end
454
+
455
+ puts "\n" + "=" * 70
456
+ puts " RAILS ERROR DASHBOARD - DIAGNOSTIC DUMP"
457
+ puts "=" * 70
458
+
459
+ dump = RailsErrorDashboard::Services::DiagnosticDumpGenerator.call
460
+
461
+ app_name = RailsErrorDashboard.configuration.application_name ||
462
+ ENV["APPLICATION_NAME"] ||
463
+ (defined?(Rails) && Rails.application.class.module_parent_name) ||
464
+ "Unknown"
465
+ app = RailsErrorDashboard::Commands::FindOrCreateApplication.call(app_name)
466
+
467
+ RailsErrorDashboard::DiagnosticDump.create!(
468
+ application_id: app.id,
469
+ dump_data: dump.to_json,
470
+ captured_at: Time.current,
471
+ note: ENV["NOTE"]
472
+ )
473
+
474
+ puts "\n" + JSON.pretty_generate(dump)
475
+ puts "\n Diagnostic dump saved to database."
476
+ puts " Application: #{app_name}"
477
+ puts " Note: #{ENV['NOTE'] || '(none)'}"
478
+ puts "\n" + "=" * 70 + "\n"
479
+ end
480
+
447
481
  desc "Run retention cleanup (delete errors older than retention_days)"
448
482
  task retention_cleanup: :environment do
449
483
  config = RailsErrorDashboard.configuration
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.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anjan Jagirdar
@@ -256,16 +256,19 @@ files:
256
256
  - app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb
257
257
  - app/jobs/rails_error_dashboard/retention_cleanup_job.rb
258
258
  - app/jobs/rails_error_dashboard/slack_error_notification_job.rb
259
+ - app/jobs/rails_error_dashboard/swallowed_exception_flush_job.rb
259
260
  - app/jobs/rails_error_dashboard/webhook_error_notification_job.rb
260
261
  - app/mailers/rails_error_dashboard/application_mailer.rb
261
262
  - app/mailers/rails_error_dashboard/error_notification_mailer.rb
262
263
  - app/models/rails_error_dashboard/application.rb
263
264
  - app/models/rails_error_dashboard/cascade_pattern.rb
265
+ - app/models/rails_error_dashboard/diagnostic_dump.rb
264
266
  - app/models/rails_error_dashboard/error_baseline.rb
265
267
  - app/models/rails_error_dashboard/error_comment.rb
266
268
  - app/models/rails_error_dashboard/error_log.rb
267
269
  - app/models/rails_error_dashboard/error_logs_record.rb
268
270
  - app/models/rails_error_dashboard/error_occurrence.rb
271
+ - app/models/rails_error_dashboard/swallowed_exception.rb
269
272
  - app/views/layouts/rails_error_dashboard.html.erb
270
273
  - app/views/rails_error_dashboard/error_notification_mailer/error_alert.html.erb
271
274
  - app/views/rails_error_dashboard/error_notification_mailer/error_alert.text.erb
@@ -275,6 +278,8 @@ files:
275
278
  - app/views/rails_error_dashboard/errors/_error_cascades.html.erb
276
279
  - app/views/rails_error_dashboard/errors/_error_info.html.erb
277
280
  - app/views/rails_error_dashboard/errors/_error_row.html.erb
281
+ - app/views/rails_error_dashboard/errors/_instance_variables.html.erb
282
+ - app/views/rails_error_dashboard/errors/_local_variables.html.erb
278
283
  - app/views/rails_error_dashboard/errors/_modals.html.erb
279
284
  - app/views/rails_error_dashboard/errors/_pattern_insights.html.erb
280
285
  - app/views/rails_error_dashboard/errors/_request_context.html.erb
@@ -288,14 +293,19 @@ files:
288
293
  - app/views/rails_error_dashboard/errors/analytics.html.erb
289
294
  - app/views/rails_error_dashboard/errors/cache_health_summary.html.erb
290
295
  - app/views/rails_error_dashboard/errors/correlation.html.erb
296
+ - app/views/rails_error_dashboard/errors/database_health_summary.html.erb
291
297
  - app/views/rails_error_dashboard/errors/deprecations.html.erb
298
+ - app/views/rails_error_dashboard/errors/diagnostic_dumps.html.erb
292
299
  - app/views/rails_error_dashboard/errors/index.html.erb
300
+ - app/views/rails_error_dashboard/errors/job_health_summary.html.erb
293
301
  - app/views/rails_error_dashboard/errors/n_plus_one_summary.html.erb
294
302
  - app/views/rails_error_dashboard/errors/overview.html.erb
295
303
  - app/views/rails_error_dashboard/errors/platform_comparison.html.erb
304
+ - app/views/rails_error_dashboard/errors/rack_attack_summary.html.erb
296
305
  - app/views/rails_error_dashboard/errors/settings.html.erb
297
306
  - app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb
298
307
  - app/views/rails_error_dashboard/errors/show.html.erb
308
+ - app/views/rails_error_dashboard/errors/swallowed_exceptions.html.erb
299
309
  - config/routes.rb
300
310
  - db/development.sqlite3
301
311
  - db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb
@@ -324,6 +334,10 @@ files:
324
334
  - db/migrate/20260221000002_add_reopened_at_to_error_logs.rb
325
335
  - db/migrate/20260303000001_add_breadcrumbs_to_error_logs.rb
326
336
  - db/migrate/20260304000001_add_system_health_to_error_logs.rb
337
+ - db/migrate/20260306000001_add_local_variables_to_error_logs.rb
338
+ - db/migrate/20260306000002_add_instance_variables_to_error_logs.rb
339
+ - db/migrate/20260306000003_create_rails_error_dashboard_swallowed_exceptions.rb
340
+ - db/migrate/20260307000001_create_rails_error_dashboard_diagnostic_dumps.rb
327
341
  - lib/generators/rails_error_dashboard/install/install_generator.rb
328
342
  - lib/generators/rails_error_dashboard/install/templates/README
329
343
  - lib/generators/rails_error_dashboard/install/templates/initializer.rb
@@ -338,6 +352,7 @@ files:
338
352
  - lib/rails_error_dashboard/commands/calculate_cascade_probability.rb
339
353
  - lib/rails_error_dashboard/commands/find_or_create_application.rb
340
354
  - lib/rails_error_dashboard/commands/find_or_increment_error.rb
355
+ - lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb
341
356
  - lib/rails_error_dashboard/commands/increment_cascade_detection.rb
342
357
  - lib/rails_error_dashboard/commands/log_error.rb
343
358
  - lib/rails_error_dashboard/commands/resolve_error.rb
@@ -368,16 +383,20 @@ files:
368
383
  - lib/rails_error_dashboard/queries/co_occurring_errors.rb
369
384
  - lib/rails_error_dashboard/queries/critical_alerts.rb
370
385
  - lib/rails_error_dashboard/queries/dashboard_stats.rb
386
+ - lib/rails_error_dashboard/queries/database_health_summary.rb
371
387
  - lib/rails_error_dashboard/queries/deprecation_warnings.rb
372
388
  - lib/rails_error_dashboard/queries/error_cascades.rb
373
389
  - lib/rails_error_dashboard/queries/error_correlation.rb
374
390
  - lib/rails_error_dashboard/queries/errors_list.rb
375
391
  - lib/rails_error_dashboard/queries/filter_options.rb
392
+ - lib/rails_error_dashboard/queries/job_health_summary.rb
376
393
  - lib/rails_error_dashboard/queries/mttr_stats.rb
377
394
  - lib/rails_error_dashboard/queries/n_plus_one_summary.rb
378
395
  - lib/rails_error_dashboard/queries/platform_comparison.rb
396
+ - lib/rails_error_dashboard/queries/rack_attack_summary.rb
379
397
  - lib/rails_error_dashboard/queries/recurring_issues.rb
380
398
  - lib/rails_error_dashboard/queries/similar_errors.rb
399
+ - lib/rails_error_dashboard/queries/swallowed_exception_summary.rb
381
400
  - lib/rails_error_dashboard/services/analytics_cache_manager.rb
382
401
  - lib/rails_error_dashboard/services/backtrace_parser.rb
383
402
  - lib/rails_error_dashboard/services/backtrace_processor.rb
@@ -388,7 +407,10 @@ files:
388
407
  - lib/rails_error_dashboard/services/cache_analyzer.rb
389
408
  - lib/rails_error_dashboard/services/cascade_detector.rb
390
409
  - lib/rails_error_dashboard/services/cause_chain_extractor.rb
410
+ - lib/rails_error_dashboard/services/crash_capture.rb
391
411
  - lib/rails_error_dashboard/services/curl_generator.rb
412
+ - lib/rails_error_dashboard/services/database_health_inspector.rb
413
+ - lib/rails_error_dashboard/services/diagnostic_dump_generator.rb
392
414
  - lib/rails_error_dashboard/services/discord_payload_builder.rb
393
415
  - lib/rails_error_dashboard/services/environment_snapshot.rb
394
416
  - lib/rails_error_dashboard/services/error_broadcaster.rb
@@ -398,6 +420,7 @@ files:
398
420
  - lib/rails_error_dashboard/services/exception_filter.rb
399
421
  - lib/rails_error_dashboard/services/git_blame_reader.rb
400
422
  - lib/rails_error_dashboard/services/github_link_generator.rb
423
+ - lib/rails_error_dashboard/services/local_variable_capturer.rb
401
424
  - lib/rails_error_dashboard/services/n_plus_one_detector.rb
402
425
  - lib/rails_error_dashboard/services/notification_helpers.rb
403
426
  - lib/rails_error_dashboard/services/notification_throttler.rb
@@ -406,15 +429,19 @@ files:
406
429
  - lib/rails_error_dashboard/services/pearson_correlation.rb
407
430
  - lib/rails_error_dashboard/services/platform_detector.rb
408
431
  - lib/rails_error_dashboard/services/priority_score_calculator.rb
432
+ - lib/rails_error_dashboard/services/rspec_generator.rb
409
433
  - lib/rails_error_dashboard/services/sensitive_data_filter.rb
410
434
  - lib/rails_error_dashboard/services/severity_classifier.rb
411
435
  - lib/rails_error_dashboard/services/similarity_calculator.rb
412
436
  - lib/rails_error_dashboard/services/slack_payload_builder.rb
413
437
  - lib/rails_error_dashboard/services/source_code_reader.rb
414
438
  - lib/rails_error_dashboard/services/statistical_classifier.rb
439
+ - lib/rails_error_dashboard/services/swallowed_exception_tracker.rb
415
440
  - lib/rails_error_dashboard/services/system_health_snapshot.rb
441
+ - lib/rails_error_dashboard/services/variable_serializer.rb
416
442
  - lib/rails_error_dashboard/services/webhook_payload_builder.rb
417
443
  - lib/rails_error_dashboard/subscribers/breadcrumb_subscriber.rb
444
+ - lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb
418
445
  - lib/rails_error_dashboard/value_objects/error_context.rb
419
446
  - lib/rails_error_dashboard/version.rb
420
447
  - lib/tasks/error_dashboard.rake
@@ -430,7 +457,7 @@ metadata:
430
457
  bug_tracker_uri: https://github.com/AnjanJ/rails_error_dashboard/issues
431
458
  funding_uri: https://buymeacoffee.com/anjanj
432
459
  post_install_message: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n
433
- \ Rails Error Dashboard v0.3.0\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n\U0001F195
460
+ \ Rails Error Dashboard v0.4.0\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n\U0001F195
434
461
  First time? Quick start:\n rails generate rails_error_dashboard:install\n rails
435
462
  db:migrate\n # Add to config/routes.rb:\n mount RailsErrorDashboard::Engine
436
463
  => '/error_dashboard'\n\n\U0001F504 Upgrading from v0.1.x?\n rails db:migrate\n