rails_error_dashboard 0.1.1 โ†’ 0.1.3

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -21
  3. data/app/assets/stylesheets/rails_error_dashboard/_catppuccin_mocha.scss +107 -0
  4. data/app/assets/stylesheets/rails_error_dashboard/_components.scss +625 -0
  5. data/app/assets/stylesheets/rails_error_dashboard/_layout.scss +257 -0
  6. data/app/assets/stylesheets/rails_error_dashboard/_theme_variables.scss +203 -0
  7. data/app/assets/stylesheets/rails_error_dashboard/application.css +926 -15
  8. data/app/assets/stylesheets/rails_error_dashboard/application.css.map +7 -0
  9. data/app/assets/stylesheets/rails_error_dashboard/application.scss +61 -0
  10. data/app/controllers/rails_error_dashboard/errors_controller.rb +94 -1
  11. data/app/helpers/rails_error_dashboard/application_helper.rb +42 -4
  12. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +91 -0
  13. data/app/helpers/rails_error_dashboard/overview_helper.rb +78 -0
  14. data/app/helpers/rails_error_dashboard/user_agent_helper.rb +118 -0
  15. data/app/models/rails_error_dashboard/error_comment.rb +27 -0
  16. data/app/models/rails_error_dashboard/error_log.rb +145 -0
  17. data/app/views/layouts/rails_error_dashboard.html.erb +796 -299
  18. data/app/views/layouts/rails_error_dashboard_old_backup.html.erb +383 -0
  19. data/app/views/rails_error_dashboard/errors/_error_row.html.erb +2 -0
  20. data/app/views/rails_error_dashboard/errors/_pattern_insights.html.erb +4 -4
  21. data/app/views/rails_error_dashboard/errors/_timeline.html.erb +167 -0
  22. data/app/views/rails_error_dashboard/errors/analytics.html.erb +138 -22
  23. data/app/views/rails_error_dashboard/errors/index.html.erb +83 -4
  24. data/app/views/rails_error_dashboard/errors/overview.html.erb +253 -0
  25. data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +29 -18
  26. data/app/views/rails_error_dashboard/errors/show.html.erb +353 -54
  27. data/config/routes.rb +7 -0
  28. data/db/migrate/20251226020000_add_workflow_fields_to_error_logs.rb +27 -0
  29. data/db/migrate/20251226020100_create_error_comments.rb +18 -0
  30. data/lib/generators/rails_error_dashboard/install/install_generator.rb +8 -2
  31. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +21 -0
  32. data/lib/rails_error_dashboard/commands/batch_delete_errors.rb +1 -1
  33. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +2 -2
  34. data/lib/rails_error_dashboard/commands/log_error.rb +47 -9
  35. data/lib/rails_error_dashboard/commands/resolve_error.rb +1 -1
  36. data/lib/rails_error_dashboard/configuration.rb +8 -0
  37. data/lib/rails_error_dashboard/error_reporter.rb +4 -4
  38. data/lib/rails_error_dashboard/logger.rb +105 -0
  39. data/lib/rails_error_dashboard/middleware/error_catcher.rb +2 -2
  40. data/lib/rails_error_dashboard/plugin.rb +3 -3
  41. data/lib/rails_error_dashboard/plugin_registry.rb +2 -2
  42. data/lib/rails_error_dashboard/plugins/jira_integration_plugin.rb +1 -1
  43. data/lib/rails_error_dashboard/plugins/metrics_plugin.rb +1 -1
  44. data/lib/rails_error_dashboard/queries/dashboard_stats.rb +109 -1
  45. data/lib/rails_error_dashboard/queries/errors_list.rb +61 -6
  46. data/lib/rails_error_dashboard/services/backtrace_parser.rb +113 -0
  47. data/lib/rails_error_dashboard/version.rb +1 -1
  48. data/lib/rails_error_dashboard.rb +2 -0
  49. metadata +18 -2
  50. data/lib/tasks/rails_error_dashboard_tasks.rake +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9bf28bf2e55b8765a3b73aa4fffc4acbd2d73f52078405934bfcbd717bf5a071
4
- data.tar.gz: f3d002a763e3d7d862500744b94d1c2a051a86bf90a30750453e8bb5826484ac
3
+ metadata.gz: be10014454096322f4e47dd754450d2c731a836686034a9ecb13ba1de3751921
4
+ data.tar.gz: 02e299b47fb947d4ec046f4fe1312d82df7a96e15705431fc612e1fed1a2be04
5
5
  SHA512:
6
- metadata.gz: 601f7444c2bc77ac76568fbb0980cf6fed715f5e94064e59b66f52a55f28e453c2415eebd48c39b14dbc57c9cf55c4992b245b19f4ae598e1c9de1ba8c6b4f0d
7
- data.tar.gz: c5597382e1c36a2a58edea25132be844b157ea87718027b0efeb1921fefacf79025875c39d162f5fbfa33e2ffd740a16f9b14534faf716f0a4b90f0f226e767a
6
+ metadata.gz: 7660280bffe36717930bc5c9c10bb2c8b97d689b1c3dd44d1a8e761156183a373768e96d48698f35ac2b807485ee2eb06edd5b9f1ba0e681e7c4715f9b203e34
7
+ data.tar.gz: e12b4a5159144c4b870e986e8616f2466fa1330ccda9c243d6acb77c2e16e35feb03614ab6c5d919ee875d013226f110e8934041e48b90e3b835b4fbd614b3fd
data/README.md CHANGED
@@ -76,28 +76,71 @@ This Rails Engine is in beta and under active development. While functional and
76
76
 
77
77
  ## โœจ Features
78
78
 
79
- ### ๐ŸŽฏ Complete Error Tracking
79
+ ### Core Features (Always Enabled)
80
+
81
+ #### ๐ŸŽฏ Complete Error Tracking
80
82
  Automatic error capture from Rails controllers, jobs, and middleware. Frontend & mobile support for React, React Native, Vue, Angular, Flutter. Platform detection (iOS/Android/Web/API), user context tracking, full stack traces.
81
83
 
82
- ### ๐Ÿ“Š Beautiful Dashboard
83
- Modern Bootstrap 5 UI with dark/light mode, responsive design, real-time statistics, search and filtering, fast pagination.
84
+ #### ๐Ÿ“Š Beautiful Dashboard
85
+ Modern Bootstrap 5 UI with dark/light mode, responsive design, real-time statistics, search and filtering, fast pagination. Overview dashboard with critical alerts, error trend charts, and platform health summary.
86
+
87
+ #### ๐Ÿ“ˆ Analytics & Insights
88
+ 7-day trend charts, severity breakdown, spike detection, resolution rate tracking, user impact analysis. Comprehensive analytics page with hourly patterns, mobile vs API breakdowns, and top affected users.
89
+
90
+ #### ๐Ÿ”ง Workflow Management
91
+ Error assignment and status tracking, priority levels (critical/high/medium/low), snooze functionality, comment threads, batch operations (bulk resolve/delete), resolution tracking with references.
92
+
93
+ #### ๐Ÿ”’ Security & Privacy
94
+ HTTP Basic Auth, environment-based settings, optional separate database for isolation. Your data stays on your server - no third-party access.
95
+
96
+ ### Optional Features (Choose During Install)
97
+
98
+ #### ๐Ÿšจ Multi-Channel Notifications
99
+
100
+ - **Slack** - Rich formatted messages with error context and direct dashboard links
101
+ - **Email** - HTML formatted alerts with full error details
102
+ - **Discord** - Embedded messages with severity color coding
103
+ - **PagerDuty** - Critical error escalation with incident management
104
+ - **Webhooks** - Custom integrations with any service (JSON payloads)
105
+
106
+ #### โšก Performance Optimizations
107
+
108
+ - **Async Logging** - Non-blocking error capture using ActiveJob (Sidekiq/SolidQueue/Async)
109
+ - **Error Sampling** - Reduce storage by sampling high-frequency errors
110
+ - **Backtrace Limiting** - Save 70-90% storage with smart truncation
111
+ - **Separate Database** - Isolate error data for better performance
112
+ - **Database Indexes** - Composite indexes and PostgreSQL GIN full-text search
113
+
114
+ #### ๐Ÿง  Advanced Analytics (8 Powerful Features)
84
115
 
85
- ### ๐Ÿ“ˆ Analytics & Insights
86
- 7-day trend charts, severity breakdown, spike detection, platform comparison, resolution rate tracking, user impact analysis.
116
+ **1. Baseline Anomaly Alerts** ๐Ÿ””
117
+ Automatically detect unusual error rate spikes using statistical analysis (mean + std dev). Get proactive notifications when errors exceed expected baselines with intelligent cooldown to avoid alert fatigue.
87
118
 
88
- ### ๐Ÿšจ Multi-Channel Alerting
89
- Slack, Email, Discord, PagerDuty, and custom webhooks. Beautifully formatted messages with rich context, direct links to errors, customizable per channel.
119
+ **2. Fuzzy Error Matching** ๐Ÿ”
120
+ Find similar errors across different error hashes using Jaccard similarity (70%) and Levenshtein distance (30%). Discover related errors that share common root causes even when they manifest differently.
90
121
 
91
- ### โšก Performance & Scalability
92
- Async error logging, backtrace limiting (70-90% storage reduction), error sampling, database optimization with composite indexes, PostgreSQL GIN indexes.
122
+ **3. Co-occurring Errors** ๐Ÿ”—
123
+ Detect errors that happen together within configurable time windows (default: 5 minutes). Identify patterns where one error frequently triggers another, helping you prioritize fixes.
93
124
 
94
- ### ๐Ÿ”Œ Plugin System
95
- Extensible architecture with event hooks. Built-in examples for Jira, metrics tracking, audit logging. Easy to create custom integrations.
125
+ **4. Error Cascade Detection** โ›“๏ธ
126
+ Identify error chains (A causes B causes C) with probability calculations and average delays. Visualize parentโ†’child relationships to understand cascading failures and fix root causes.
96
127
 
97
- ### ๐Ÿ”’ Security & Privacy
98
- HTTP Basic Auth, environment-based settings, optional separate database for isolation.
128
+ **5. Error Correlation Analysis** ๐Ÿ“Š
129
+ Correlate errors with app versions, git commits, and users. Find problematic releases, identify users affected by multiple error types, and detect time-based patterns.
99
130
 
100
- **๐Ÿ“š [View complete feature list โ†’](docs/FEATURES.md)**
131
+ **6. Platform Comparison** ๐Ÿ“ฑ
132
+ Compare iOS vs Android vs Web health metrics side-by-side. Platform-specific error rates, severity distributions, resolution times, and stability scores (0-100).
133
+
134
+ **7. Occurrence Pattern Detection** ๐Ÿ“ˆ
135
+ Detect cyclical patterns (business hours, nighttime, weekend rhythms) and error bursts (many errors in short time). Understand when and how your errors happen.
136
+
137
+ **8. Developer Insights** ๐Ÿ’ก
138
+ AI-powered insights with severity detection, platform stability scoring, actionable recommendations, and recent error activity summaries.
139
+
140
+ #### ๐Ÿ”Œ Plugin System
141
+ Extensible architecture with event hooks (`on_error_logged`, `on_error_resolved`, `on_threshold_exceeded`). Built-in examples for Jira integration, metrics tracking, audit logging. Easy to create custom plugins - just drop a file in `config/initializers/error_dashboard_plugins/`.
142
+
143
+ **๐Ÿ“š [View complete feature list with examples โ†’](docs/FEATURES.md)**
101
144
 
102
145
  ---
103
146
 
@@ -337,7 +380,6 @@ config.webhook_urls = ['https://yourapp.com/hooks/errors']
337
380
 
338
381
  ### Development
339
382
  - **[Testing](docs/development/TESTING.md)** - Multi-version testing
340
- - **[CI Setup](docs/development/CI_SETUP.md)** - GitHub Actions configuration
341
383
 
342
384
  **๐Ÿ“– [View all documentation โ†’](docs/README.md)**
343
385
 
@@ -373,16 +415,19 @@ We welcome contributions! Here's how to get started:
373
415
  ```bash
374
416
  git clone https://github.com/AnjanJ/rails_error_dashboard.git
375
417
  cd rails_error_dashboard
376
- bundle install
377
418
 
378
- # Run tests
379
- bundle exec rspec
419
+ # Automated setup (installs deps, hooks, runs tests)
420
+ bin/setup
380
421
 
381
- # Run tests for all Rails versions
382
- bundle exec appraisal rspec
422
+ # Or manual setup
423
+ bundle install
424
+ bundle exec lefthook install # Installs git hooks
425
+ bundle exec rspec
383
426
  ```
384
427
 
385
- **๐Ÿ”ง [Development guide โ†’](docs/development/TESTING.md)**
428
+ **Git Hooks:** We use [Lefthook](https://github.com/evilmartians/lefthook) to run quality checks before commit/push. This ensures CI passes and saves GitHub Actions minutes!
429
+
430
+ **๐Ÿ”ง [Development guide โ†’](DEVELOPMENT.md)** | **๐Ÿงช [Testing guide โ†’](docs/development/TESTING.md)**
386
431
 
387
432
  ---
388
433
 
@@ -0,0 +1,107 @@
1
+ // =============================================================================
2
+ // Catppuccin Mocha Theme - Color Palette
3
+ // =============================================================================
4
+ // Official Catppuccin color palette for the Mocha flavor (dark theme)
5
+ // https://github.com/catppuccin/catppuccin
6
+ //
7
+ // This file defines both SCSS variables and CSS custom properties for
8
+ // maximum flexibility in styling components.
9
+ // =============================================================================
10
+
11
+ // -----------------------------------------------------------------------------
12
+ // SCSS Variables - Accent Colors
13
+ // -----------------------------------------------------------------------------
14
+ // Use these for compile-time color calculations and SCSS functions
15
+
16
+ $ctp-rosewater: #f5e0dc !default; // Soft highlights, subtle accents
17
+ $ctp-flamingo: #f2cdcd !default; // Gentle warnings, soft alerts
18
+ $ctp-pink: #f5c2e7 !default; // Playful accents, decorative
19
+ $ctp-mauve: #cba6f7 !default; // Primary brand color, links
20
+ $ctp-red: #f38ba8 !default; // Errors, critical states
21
+ $ctp-maroon: #eba0ac !default; // Secondary errors, warnings
22
+ $ctp-peach: #fab387 !default; // Warnings, cautionary states
23
+ $ctp-yellow: #f9e2af !default; // Highlights, important info
24
+ $ctp-green: #a6e3a1 !default; // Success, positive states
25
+ $ctp-teal: #94e2d5 !default; // Info, neutral positive
26
+ $ctp-sky: #89dceb !default; // Links, interactive elements
27
+ $ctp-sapphire: #74c7ec !default; // Accents, decorative
28
+ $ctp-blue: #89b4fa !default; // Info, primary actions
29
+ $ctp-lavender: #b4befe !default; // Soft accents, highlights
30
+
31
+ // -----------------------------------------------------------------------------
32
+ // SCSS Variables - Neutral Colors
33
+ // -----------------------------------------------------------------------------
34
+ // Background and text colors for UI structure
35
+
36
+ $ctp-text: #cdd6f4 !default; // Primary text
37
+ $ctp-subtext1: #bac2de !default; // Secondary text
38
+ $ctp-subtext0: #a6adc8 !default; // Tertiary text, muted
39
+ $ctp-overlay2: #9399b2 !default; // Hover states, highlights
40
+ $ctp-overlay1: #7f849c !default; // Subtle backgrounds
41
+ $ctp-overlay0: #6c7086 !default; // Muted elements, disabled
42
+ $ctp-surface2: #585b70 !default; // Secondary surfaces
43
+ $ctp-surface1: #45475a !default; // Interactive elements
44
+ $ctp-surface0: #313244 !default; // Component backgrounds (cards)
45
+ $ctp-base: #1e1e2e !default; // Main background
46
+ $ctp-mantle: #181825 !default; // Alternate background
47
+ $ctp-crust: #11111b !default; // Borders, edges
48
+
49
+ // -----------------------------------------------------------------------------
50
+ // CSS Custom Properties (CSS Variables)
51
+ // -----------------------------------------------------------------------------
52
+ // These can be changed at runtime and accessed from JavaScript
53
+ // Use these for theme switching and dynamic styling
54
+
55
+ :root {
56
+ // Accent colors as CSS variables
57
+ --ctp-rosewater: #{$ctp-rosewater};
58
+ --ctp-flamingo: #{$ctp-flamingo};
59
+ --ctp-pink: #{$ctp-pink};
60
+ --ctp-mauve: #{$ctp-mauve};
61
+ --ctp-red: #{$ctp-red};
62
+ --ctp-maroon: #{$ctp-maroon};
63
+ --ctp-peach: #{$ctp-peach};
64
+ --ctp-yellow: #{$ctp-yellow};
65
+ --ctp-green: #{$ctp-green};
66
+ --ctp-teal: #{$ctp-teal};
67
+ --ctp-sky: #{$ctp-sky};
68
+ --ctp-sapphire: #{$ctp-sapphire};
69
+ --ctp-blue: #{$ctp-blue};
70
+ --ctp-lavender: #{$ctp-lavender};
71
+
72
+ // Neutral colors as CSS variables
73
+ --ctp-text: #{$ctp-text};
74
+ --ctp-subtext1: #{$ctp-subtext1};
75
+ --ctp-subtext0: #{$ctp-subtext0};
76
+ --ctp-overlay2: #{$ctp-overlay2};
77
+ --ctp-overlay1: #{$ctp-overlay1};
78
+ --ctp-overlay0: #{$ctp-overlay0};
79
+ --ctp-surface2: #{$ctp-surface2};
80
+ --ctp-surface1: #{$ctp-surface1};
81
+ --ctp-surface0: #{$ctp-surface0};
82
+ --ctp-base: #{$ctp-base};
83
+ --ctp-mantle: #{$ctp-mantle};
84
+ --ctp-crust: #{$ctp-crust};
85
+ }
86
+
87
+ // -----------------------------------------------------------------------------
88
+ // Utility Functions
89
+ // -----------------------------------------------------------------------------
90
+
91
+ // Add opacity to a Catppuccin color
92
+ // Usage: background-color: ctp-opacity($ctp-red, 0.1);
93
+ @function ctp-opacity($color, $opacity) {
94
+ @return rgba($color, $opacity);
95
+ }
96
+
97
+ // Lighten a Catppuccin color (for hover states)
98
+ // Usage: background-color: ctp-lighten($ctp-mauve, 10%);
99
+ @function ctp-lighten($color, $amount) {
100
+ @return lighten($color, $amount);
101
+ }
102
+
103
+ // Darken a Catppuccin color (for active states)
104
+ // Usage: background-color: ctp-darken($ctp-mauve, 10%);
105
+ @function ctp-darken($color, $amount) {
106
+ @return darken($color, $amount);
107
+ }