rails_error_dashboard 0.5.14 → 0.6.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/app/controllers/rails_error_dashboard/errors_controller.rb +31 -26
- data/app/helpers/rails_error_dashboard/application_helper.rb +12 -5
- data/app/views/layouts/rails_error_dashboard.html.erb +1218 -1936
- data/app/views/rails_error_dashboard/errors/_breadcrumbs_group.html.erb +4 -4
- data/app/views/rails_error_dashboard/errors/_co_occurring_errors.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_discussion.html.erb +3 -3
- data/app/views/rails_error_dashboard/errors/_error_cascades.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_error_row.html.erb +69 -79
- data/app/views/rails_error_dashboard/errors/_instance_variables.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_issue_section.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_local_variables.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_pattern_insights.html.erb +2 -2
- data/app/views/rails_error_dashboard/errors/_request_context.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_similar_errors.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/_timeline.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/actioncable_health_summary.html.erb +6 -6
- data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +6 -6
- data/app/views/rails_error_dashboard/errors/analytics.html.erb +34 -50
- data/app/views/rails_error_dashboard/errors/cache_health_summary.html.erb +7 -7
- data/app/views/rails_error_dashboard/errors/correlation.html.erb +11 -11
- data/app/views/rails_error_dashboard/errors/database_health_summary.html.erb +114 -172
- data/app/views/rails_error_dashboard/errors/deprecations.html.erb +7 -7
- data/app/views/rails_error_dashboard/errors/diagnostic_dumps.html.erb +6 -6
- data/app/views/rails_error_dashboard/errors/index.html.erb +294 -622
- data/app/views/rails_error_dashboard/errors/job_health_summary.html.erb +7 -7
- data/app/views/rails_error_dashboard/errors/n_plus_one_summary.html.erb +7 -7
- data/app/views/rails_error_dashboard/errors/overview.html.erb +192 -363
- data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +11 -11
- data/app/views/rails_error_dashboard/errors/rack_attack_summary.html.erb +6 -6
- data/app/views/rails_error_dashboard/errors/releases.html.erb +6 -6
- data/app/views/rails_error_dashboard/errors/settings.html.erb +32 -52
- data/app/views/rails_error_dashboard/errors/show.html.erb +200 -203
- data/app/views/rails_error_dashboard/errors/swallowed_exceptions.html.erb +7 -7
- data/app/views/rails_error_dashboard/errors/user_impact.html.erb +6 -6
- data/lib/rails_error_dashboard/commands/log_error.rb +14 -3
- data/lib/rails_error_dashboard/configuration.rb +6 -0
- data/lib/rails_error_dashboard/error_reporter.rb +11 -1
- data/lib/rails_error_dashboard/services/backtrace_parser.rb +10 -4
- data/lib/rails_error_dashboard/services/backtrace_processor.rb +44 -2
- data/lib/rails_error_dashboard/services/error_broadcaster.rb +19 -4
- data/lib/rails_error_dashboard/services/notification_helpers.rb +9 -2
- data/lib/rails_error_dashboard/subscribers/issue_tracker_subscriber.rb +21 -0
- data/lib/rails_error_dashboard/version.rb +1 -1
- metadata +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% content_for :page_title, "Platform Comparison" %>
|
|
2
2
|
|
|
3
|
-
<div
|
|
3
|
+
<div>
|
|
4
4
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
5
|
-
<h1
|
|
5
|
+
<h1 style="font-size: 20px; font-weight: 700; margin: 0;">
|
|
6
6
|
<i class="bi bi-phone me-2"></i>
|
|
7
7
|
Platform Health Comparison
|
|
8
8
|
</h1>
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<% if @platform_health.empty? %>
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="red-empty-state">
|
|
25
25
|
<i class="bi bi-phone display-1 text-muted mb-3"></i>
|
|
26
|
-
<
|
|
26
|
+
<div class="red-empty-state-title">No Platform Data Available</div>
|
|
27
27
|
<p class="text-muted">
|
|
28
28
|
No errors were logged for the selected time period (<%= @days %> days).
|
|
29
29
|
</p>
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
</div>
|
|
88
88
|
</div>
|
|
89
89
|
</div>
|
|
90
|
-
<div class="card-footer
|
|
90
|
+
<div class="card-footer border-top">
|
|
91
91
|
<%= link_to "View #{platform} Errors", errors_path(platform: platform), class: "btn btn-sm btn-outline-primary w-100" %>
|
|
92
92
|
</div>
|
|
93
93
|
</div>
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
|
|
98
98
|
<!-- Error Rate Comparison Chart -->
|
|
99
99
|
<div class="card mb-4">
|
|
100
|
-
<div class="card-header
|
|
100
|
+
<div class="card-header">
|
|
101
101
|
<h5 class="mb-0">
|
|
102
102
|
<i class="bi bi-bar-chart me-2"></i>
|
|
103
103
|
Error Rate by Platform
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
|
|
111
111
|
<!-- Daily Trend Charts -->
|
|
112
112
|
<div class="card mb-4">
|
|
113
|
-
<div class="card-header
|
|
113
|
+
<div class="card-header">
|
|
114
114
|
<h5 class="mb-0">
|
|
115
115
|
<i class="bi bi-graph-up me-2"></i>
|
|
116
116
|
Daily Error Trends
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<!-- Severity Distribution -->
|
|
126
126
|
<div class="col-lg-6 mb-4">
|
|
127
127
|
<div class="card h-100">
|
|
128
|
-
<div class="card-header
|
|
128
|
+
<div class="card-header">
|
|
129
129
|
<h5 class="mb-0">
|
|
130
130
|
<i class="bi bi-exclamation-triangle me-2"></i>
|
|
131
131
|
Severity Distribution
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
<!-- Resolution Time Comparison -->
|
|
190
190
|
<div class="col-lg-6 mb-4">
|
|
191
191
|
<div class="card h-100">
|
|
192
|
-
<div class="card-header
|
|
192
|
+
<div class="card-header">
|
|
193
193
|
<h5 class="mb-0">
|
|
194
194
|
<i class="bi bi-clock-history me-2"></i>
|
|
195
195
|
Average Resolution Time
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
<!-- Cross-Platform Errors -->
|
|
206
206
|
<% if @cross_platform_errors.any? %>
|
|
207
207
|
<div class="card mb-4">
|
|
208
|
-
<div class="card-header
|
|
208
|
+
<div class="card-header">
|
|
209
209
|
<h5 class="mb-0">
|
|
210
210
|
<i class="bi bi-layers me-2"></i>
|
|
211
211
|
Cross-Platform Errors
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
<% @top_errors_by_platform.each do |platform, errors| %>
|
|
257
257
|
<div class="col-lg-6 mb-4">
|
|
258
258
|
<div class="card h-100">
|
|
259
|
-
<div class="card-header
|
|
259
|
+
<div class="card-header">
|
|
260
260
|
<h5 class="mb-0 text-capitalize">
|
|
261
261
|
<i class="bi bi-bug me-2"></i>
|
|
262
262
|
Top Errors - <%= platform || 'Unknown' %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% content_for :page_title, "Rate Limit Events" %>
|
|
2
2
|
|
|
3
|
-
<div
|
|
3
|
+
<div>
|
|
4
4
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
5
|
-
<h1
|
|
5
|
+
<h1 style="font-size: 20px; font-weight: 700; margin: 0;">
|
|
6
6
|
<i class="bi bi-shield-exclamation me-2"></i>
|
|
7
7
|
Rate Limit Events
|
|
8
8
|
</h1>
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<% if @unique_rules == 0 %>
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="red-empty-state">
|
|
25
25
|
<i class="bi bi-shield-check display-1 text-success mb-3"></i>
|
|
26
|
-
<
|
|
26
|
+
<div class="red-empty-state-title">No Rate Limit Events Found</div>
|
|
27
27
|
<p class="text-muted">
|
|
28
28
|
No Rack Attack throttle, blocklist, or track events were detected in error breadcrumbs over the last <%= @days %> days.
|
|
29
29
|
</p>
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
</div>
|
|
69
69
|
|
|
70
70
|
<div class="card mb-4">
|
|
71
|
-
<div class="card-header
|
|
71
|
+
<div class="card-header d-flex justify-content-between align-items-center">
|
|
72
72
|
<h5 class="mb-0">
|
|
73
73
|
<i class="bi bi-shield-exclamation text-warning me-2"></i>
|
|
74
74
|
Rate Limit Events by Rule
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
</table>
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
|
-
<div class="card-footer
|
|
116
|
+
<div class="card-footer border-top d-flex justify-content-between align-items-center">
|
|
117
117
|
<div>
|
|
118
118
|
<small class="text-muted">
|
|
119
119
|
<i class="bi bi-lightbulb text-warning"></i> Rate limit events are captured when they coincide with errors. High counts may indicate abuse or misconfigured rules.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% content_for :page_title, "Releases" %>
|
|
2
2
|
|
|
3
|
-
<div
|
|
3
|
+
<div>
|
|
4
4
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
5
|
-
<h1
|
|
5
|
+
<h1 style="font-size: 20px; font-weight: 700; margin: 0;">
|
|
6
6
|
<i class="bi bi-rocket-takeoff me-2"></i>
|
|
7
7
|
Releases
|
|
8
8
|
</h1>
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<% if @releases.empty? %>
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="red-empty-state">
|
|
25
25
|
<i class="bi bi-rocket-takeoff display-1 text-muted mb-3"></i>
|
|
26
|
-
<
|
|
26
|
+
<div class="red-empty-state-title">No Release Data Found</div>
|
|
27
27
|
<p class="text-muted">
|
|
28
28
|
No version data was detected in errors over the last <%= @days %> days.
|
|
29
29
|
</p>
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
|
|
159
159
|
<!-- Release Timeline Table -->
|
|
160
160
|
<div class="card mb-4">
|
|
161
|
-
<div class="card-header
|
|
161
|
+
<div class="card-header d-flex justify-content-between align-items-center">
|
|
162
162
|
<h5 class="mb-0">
|
|
163
163
|
<i class="bi bi-clock-history text-primary me-2"></i>
|
|
164
164
|
Release Timeline
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
</table>
|
|
268
268
|
</div>
|
|
269
269
|
</div>
|
|
270
|
-
<div class="card-footer
|
|
270
|
+
<div class="card-footer border-top d-flex justify-content-between align-items-center">
|
|
271
271
|
<small class="text-muted">
|
|
272
272
|
<i class="bi bi-info-circle"></i>
|
|
273
273
|
Stability: <span class="badge bg-success">Green</span> ≤ avg errors,
|
|
@@ -168,68 +168,48 @@
|
|
|
168
168
|
}
|
|
169
169
|
%>
|
|
170
170
|
|
|
171
|
-
<div
|
|
172
|
-
|
|
173
|
-
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
174
|
-
<h1 class="h3 mb-0">
|
|
175
|
-
<i class="bi bi-gear me-2"></i>
|
|
176
|
-
Configuration Settings
|
|
177
|
-
</h1>
|
|
178
|
-
<div>
|
|
179
|
-
<%= link_to root_path, class: "btn btn-outline-secondary btn-sm" do %>
|
|
180
|
-
<i class="bi bi-arrow-left"></i> Back to Dashboard
|
|
181
|
-
<% end %>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
171
|
+
<div>
|
|
172
|
+
<h1 style="font-size: 20px; font-weight: 700; margin-bottom: var(--space-4);">Settings</h1>
|
|
184
173
|
|
|
185
|
-
<
|
|
186
|
-
<
|
|
187
|
-
|
|
188
|
-
<code>config/initializers/rails_error_dashboard.rb</code>
|
|
189
|
-
</div>
|
|
174
|
+
<p style="font-size: 13px; color: var(--text-tertiary); margin-bottom: var(--space-6);">
|
|
175
|
+
Read-only view of current configuration. Edit via <code>config/initializers/rails_error_dashboard.rb</code> or environment variables.
|
|
176
|
+
</p>
|
|
190
177
|
|
|
191
178
|
<!-- Dynamically render setting groups -->
|
|
192
179
|
<% setting_groups.each do |group_name, group_config| %>
|
|
193
|
-
<div class="card
|
|
194
|
-
<
|
|
195
|
-
<
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
<div class="card-body">
|
|
200
|
-
<div class="row">
|
|
201
|
-
<% group_config[:settings].each do |setting_key, setting_meta| %>
|
|
202
|
-
<%
|
|
203
|
-
# Check if this setting should be displayed based on show_if condition
|
|
204
|
-
show_if_key = setting_meta[:show_if]
|
|
205
|
-
should_show = show_if_key.nil? || @config.send(show_if_key)
|
|
206
|
-
next unless should_show
|
|
207
|
-
|
|
208
|
-
value = @config.send(setting_meta[:method] || setting_key)
|
|
209
|
-
%>
|
|
210
|
-
<div class="col-md-6 mb-3">
|
|
211
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
212
|
-
<div>
|
|
213
|
-
<strong><%= setting_meta[:label] %></strong>
|
|
214
|
-
<br><small class="text-muted"><%= setting_meta[:description] %></small>
|
|
215
|
-
</div>
|
|
216
|
-
<div class="text-end">
|
|
217
|
-
<%= render partial: 'rails_error_dashboard/errors/settings/value_badge',
|
|
218
|
-
locals: { value: value, type: setting_meta[:type], unit: setting_meta[:unit] } %>
|
|
219
|
-
</div>
|
|
220
|
-
</div>
|
|
221
|
-
</div>
|
|
222
|
-
<% end %>
|
|
180
|
+
<div class="card" style="margin-bottom: var(--space-4);">
|
|
181
|
+
<button onclick="var b = this.nextElementSibling; b.style.display = b.style.display === 'none' ? 'block' : 'none'; var chev = this.querySelector('.chev'); if(chev) chev.className = b.style.display === 'none' ? 'bi bi-chevron-down chev' : 'bi bi-chevron-up chev';" style="display: flex; align-items: center; justify-content: space-between; width: 100%; padding: var(--space-4) var(--space-6); background: none; border: none; cursor: pointer; border-bottom: 1px solid var(--border-primary);">
|
|
182
|
+
<span style="font-size: 14px; font-weight: 600; color: var(--text-primary);"><i class="<%= group_config[:icon] %>" style="margin-right: 6px;"></i> <%= group_name %></span>
|
|
183
|
+
<div style="display: flex; align-items: center; gap: 8px;">
|
|
184
|
+
<span style="font-size: 11px; color: var(--text-tertiary);"><%= group_config[:settings].size %> options</span>
|
|
185
|
+
<i class="bi bi-chevron-up chev" style="font-size: 12px; color: var(--text-tertiary);"></i>
|
|
223
186
|
</div>
|
|
187
|
+
</button>
|
|
188
|
+
<div>
|
|
189
|
+
<% group_config[:settings].each do |setting_key, setting_meta| %>
|
|
190
|
+
<%
|
|
191
|
+
show_if_key = setting_meta[:show_if]
|
|
192
|
+
should_show = show_if_key.nil? || @config.send(show_if_key)
|
|
193
|
+
next unless should_show
|
|
194
|
+
value = @config.send(setting_meta[:method] || setting_key)
|
|
195
|
+
%>
|
|
196
|
+
<div style="display: flex; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-6); border-bottom: 1px solid var(--border-primary); font-size: 13px;">
|
|
197
|
+
<span style="font-family: var(--font-mono); font-size: 12px; color: var(--accent); font-weight: 500; width: 240px; flex-shrink: 0;"><%= setting_key %></span>
|
|
198
|
+
<span style="font-family: var(--font-mono); font-size: 12px; color: var(--text-primary); font-weight: 500; width: 180px; flex-shrink: 0;">
|
|
199
|
+
<%= render partial: 'rails_error_dashboard/errors/settings/value_badge',
|
|
200
|
+
locals: { value: value, type: setting_meta[:type], unit: setting_meta[:unit] } %>
|
|
201
|
+
</span>
|
|
202
|
+
<span style="color: var(--text-tertiary); font-size: 12px;"><%= setting_meta[:description] %></span>
|
|
203
|
+
</div>
|
|
204
|
+
<% end %>
|
|
224
205
|
</div>
|
|
225
206
|
</div>
|
|
226
207
|
<% end %>
|
|
227
208
|
|
|
228
209
|
<!-- Active Plugins -->
|
|
229
|
-
<div class="card
|
|
230
|
-
<div
|
|
231
|
-
<
|
|
232
|
-
<i class="bi bi-puzzle"></i> Active Plugins
|
|
210
|
+
<div class="card" style="margin-bottom: var(--space-4);">
|
|
211
|
+
<div style="padding: var(--space-4) var(--space-6); border-bottom: 1px solid var(--border-primary);">
|
|
212
|
+
<span style="font-size: 14px; font-weight: 600; color: var(--text-primary);"><i class="bi bi-puzzle" style="margin-right: 6px;"></i> Active Plugins</span>
|
|
233
213
|
</h5>
|
|
234
214
|
</div>
|
|
235
215
|
<div class="card-body">
|