rails_error_dashboard 0.1.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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +858 -0
  4. data/Rakefile +3 -0
  5. data/app/assets/stylesheets/rails_error_dashboard/application.css +15 -0
  6. data/app/controllers/rails_error_dashboard/application_controller.rb +12 -0
  7. data/app/controllers/rails_error_dashboard/errors_controller.rb +123 -0
  8. data/app/helpers/rails_error_dashboard/application_helper.rb +4 -0
  9. data/app/jobs/rails_error_dashboard/application_job.rb +4 -0
  10. data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +116 -0
  11. data/app/jobs/rails_error_dashboard/email_error_notification_job.rb +19 -0
  12. data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +105 -0
  13. data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +166 -0
  14. data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +108 -0
  15. data/app/mailers/rails_error_dashboard/application_mailer.rb +8 -0
  16. data/app/mailers/rails_error_dashboard/error_notification_mailer.rb +27 -0
  17. data/app/models/rails_error_dashboard/application_record.rb +5 -0
  18. data/app/models/rails_error_dashboard/error_log.rb +185 -0
  19. data/app/models/rails_error_dashboard/error_logs_record.rb +34 -0
  20. data/app/views/layouts/rails_error_dashboard/application.html.erb +17 -0
  21. data/app/views/layouts/rails_error_dashboard.html.erb +351 -0
  22. data/app/views/rails_error_dashboard/error_notification_mailer/error_alert.html.erb +200 -0
  23. data/app/views/rails_error_dashboard/error_notification_mailer/error_alert.text.erb +32 -0
  24. data/app/views/rails_error_dashboard/errors/analytics.html.erb +237 -0
  25. data/app/views/rails_error_dashboard/errors/index.html.erb +334 -0
  26. data/app/views/rails_error_dashboard/errors/show.html.erb +294 -0
  27. data/config/routes.rb +13 -0
  28. data/db/migrate/20251224000001_create_rails_error_dashboard_error_logs.rb +40 -0
  29. data/db/migrate/20251224081522_add_better_tracking_to_error_logs.rb +13 -0
  30. data/db/migrate/20251224101217_add_controller_action_to_error_logs.rb +10 -0
  31. data/lib/generators/rails_error_dashboard/install/install_generator.rb +27 -0
  32. data/lib/generators/rails_error_dashboard/install/templates/README +33 -0
  33. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +64 -0
  34. data/lib/rails_error_dashboard/commands/batch_delete_errors.rb +40 -0
  35. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +60 -0
  36. data/lib/rails_error_dashboard/commands/log_error.rb +134 -0
  37. data/lib/rails_error_dashboard/commands/resolve_error.rb +35 -0
  38. data/lib/rails_error_dashboard/configuration.rb +83 -0
  39. data/lib/rails_error_dashboard/engine.rb +20 -0
  40. data/lib/rails_error_dashboard/error_reporter.rb +35 -0
  41. data/lib/rails_error_dashboard/middleware/error_catcher.rb +41 -0
  42. data/lib/rails_error_dashboard/plugin.rb +98 -0
  43. data/lib/rails_error_dashboard/plugin_registry.rb +88 -0
  44. data/lib/rails_error_dashboard/plugins/audit_log_plugin.rb +96 -0
  45. data/lib/rails_error_dashboard/plugins/jira_integration_plugin.rb +122 -0
  46. data/lib/rails_error_dashboard/plugins/metrics_plugin.rb +78 -0
  47. data/lib/rails_error_dashboard/queries/analytics_stats.rb +108 -0
  48. data/lib/rails_error_dashboard/queries/dashboard_stats.rb +37 -0
  49. data/lib/rails_error_dashboard/queries/developer_insights.rb +277 -0
  50. data/lib/rails_error_dashboard/queries/errors_list.rb +66 -0
  51. data/lib/rails_error_dashboard/queries/errors_list_v2.rb +149 -0
  52. data/lib/rails_error_dashboard/queries/filter_options.rb +21 -0
  53. data/lib/rails_error_dashboard/services/platform_detector.rb +41 -0
  54. data/lib/rails_error_dashboard/value_objects/error_context.rb +148 -0
  55. data/lib/rails_error_dashboard/version.rb +3 -0
  56. data/lib/rails_error_dashboard.rb +60 -0
  57. data/lib/tasks/rails_error_dashboard_tasks.rake +4 -0
  58. metadata +318 -0
@@ -0,0 +1,60 @@
1
+ require "rails_error_dashboard/version"
2
+ require "rails_error_dashboard/engine"
3
+ require "rails_error_dashboard/configuration"
4
+
5
+ # External dependencies
6
+ require "pagy"
7
+ require "browser"
8
+ require "groupdate"
9
+ require "httparty"
10
+
11
+ # Core library files
12
+ require "rails_error_dashboard/value_objects/error_context"
13
+ require "rails_error_dashboard/services/platform_detector"
14
+ require "rails_error_dashboard/commands/log_error"
15
+ require "rails_error_dashboard/commands/resolve_error"
16
+ require "rails_error_dashboard/commands/batch_resolve_errors"
17
+ require "rails_error_dashboard/commands/batch_delete_errors"
18
+ require "rails_error_dashboard/queries/errors_list"
19
+ require "rails_error_dashboard/queries/dashboard_stats"
20
+ require "rails_error_dashboard/queries/analytics_stats"
21
+ require "rails_error_dashboard/queries/filter_options"
22
+ require "rails_error_dashboard/error_reporter"
23
+ require "rails_error_dashboard/middleware/error_catcher"
24
+
25
+ # Plugin system
26
+ require "rails_error_dashboard/plugin"
27
+ require "rails_error_dashboard/plugin_registry"
28
+
29
+ module RailsErrorDashboard
30
+ class << self
31
+ attr_accessor :configuration
32
+ end
33
+
34
+ def self.configure
35
+ self.configuration ||= Configuration.new
36
+ yield(configuration)
37
+ end
38
+
39
+ # Register a plugin
40
+ # @param plugin [Plugin] The plugin instance to register
41
+ # @return [Boolean] True if registered successfully, false otherwise
42
+ def self.register_plugin(plugin)
43
+ PluginRegistry.register(plugin)
44
+ end
45
+
46
+ # Unregister a plugin by name
47
+ # @param plugin_name [String] The name of the plugin to unregister
48
+ def self.unregister_plugin(plugin_name)
49
+ PluginRegistry.unregister(plugin_name)
50
+ end
51
+
52
+ # Get all registered plugins
53
+ # @return [Array<Plugin>] List of registered plugins
54
+ def self.plugins
55
+ PluginRegistry.plugins
56
+ end
57
+
58
+ # Initialize with default configuration
59
+ self.configuration = Configuration.new
60
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :rails_error_dashboard do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,318 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_error_dashboard
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Anjan Jagirdar
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 7.0.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 7.0.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: pagy
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '9.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '9.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: browser
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '6.0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: groupdate
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '6.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '6.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: httparty
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.21'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.21'
82
+ - !ruby/object:Gem::Dependency
83
+ name: concurrent-ruby
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.0
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: 1.3.5
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.0
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: 1.3.5
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec-rails
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '7.0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '7.0'
116
+ - !ruby/object:Gem::Dependency
117
+ name: factory_bot_rails
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '6.4'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '6.4'
130
+ - !ruby/object:Gem::Dependency
131
+ name: faker
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '3.0'
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: database_cleaner-active_record
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '2.0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '2.0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: shoulda-matchers
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '6.0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '6.0'
172
+ - !ruby/object:Gem::Dependency
173
+ name: webmock
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '3.0'
179
+ type: :development
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '3.0'
186
+ - !ruby/object:Gem::Dependency
187
+ name: vcr
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '6.0'
193
+ type: :development
194
+ prerelease: false
195
+ version_requirements: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '6.0'
200
+ - !ruby/object:Gem::Dependency
201
+ name: simplecov
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '0.22'
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '0.22'
214
+ - !ruby/object:Gem::Dependency
215
+ name: appraisal
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '2.5'
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '2.5'
228
+ description: "⚠️ BETA: Rails Error Dashboard provides error tracking with a beautiful
229
+ UI, multi-channel notifications (Slack, Email, Discord, PagerDuty), platform detection
230
+ (iOS/Android/Web/API), analytics, and optional separate database support. Works
231
+ with Rails 7.0-8.0. API may change before v1.0.0."
232
+ email:
233
+ - anjan.jagirdar@gmail.com
234
+ executables: []
235
+ extensions: []
236
+ extra_rdoc_files: []
237
+ files:
238
+ - MIT-LICENSE
239
+ - README.md
240
+ - Rakefile
241
+ - app/assets/stylesheets/rails_error_dashboard/application.css
242
+ - app/controllers/rails_error_dashboard/application_controller.rb
243
+ - app/controllers/rails_error_dashboard/errors_controller.rb
244
+ - app/helpers/rails_error_dashboard/application_helper.rb
245
+ - app/jobs/rails_error_dashboard/application_job.rb
246
+ - app/jobs/rails_error_dashboard/discord_error_notification_job.rb
247
+ - app/jobs/rails_error_dashboard/email_error_notification_job.rb
248
+ - app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb
249
+ - app/jobs/rails_error_dashboard/slack_error_notification_job.rb
250
+ - app/jobs/rails_error_dashboard/webhook_error_notification_job.rb
251
+ - app/mailers/rails_error_dashboard/application_mailer.rb
252
+ - app/mailers/rails_error_dashboard/error_notification_mailer.rb
253
+ - app/models/rails_error_dashboard/application_record.rb
254
+ - app/models/rails_error_dashboard/error_log.rb
255
+ - app/models/rails_error_dashboard/error_logs_record.rb
256
+ - app/views/layouts/rails_error_dashboard.html.erb
257
+ - app/views/layouts/rails_error_dashboard/application.html.erb
258
+ - app/views/rails_error_dashboard/error_notification_mailer/error_alert.html.erb
259
+ - app/views/rails_error_dashboard/error_notification_mailer/error_alert.text.erb
260
+ - app/views/rails_error_dashboard/errors/analytics.html.erb
261
+ - app/views/rails_error_dashboard/errors/index.html.erb
262
+ - app/views/rails_error_dashboard/errors/show.html.erb
263
+ - config/routes.rb
264
+ - db/migrate/20251224000001_create_rails_error_dashboard_error_logs.rb
265
+ - db/migrate/20251224081522_add_better_tracking_to_error_logs.rb
266
+ - db/migrate/20251224101217_add_controller_action_to_error_logs.rb
267
+ - lib/generators/rails_error_dashboard/install/install_generator.rb
268
+ - lib/generators/rails_error_dashboard/install/templates/README
269
+ - lib/generators/rails_error_dashboard/install/templates/initializer.rb
270
+ - lib/rails_error_dashboard.rb
271
+ - lib/rails_error_dashboard/commands/batch_delete_errors.rb
272
+ - lib/rails_error_dashboard/commands/batch_resolve_errors.rb
273
+ - lib/rails_error_dashboard/commands/log_error.rb
274
+ - lib/rails_error_dashboard/commands/resolve_error.rb
275
+ - lib/rails_error_dashboard/configuration.rb
276
+ - lib/rails_error_dashboard/engine.rb
277
+ - lib/rails_error_dashboard/error_reporter.rb
278
+ - lib/rails_error_dashboard/middleware/error_catcher.rb
279
+ - lib/rails_error_dashboard/plugin.rb
280
+ - lib/rails_error_dashboard/plugin_registry.rb
281
+ - lib/rails_error_dashboard/plugins/audit_log_plugin.rb
282
+ - lib/rails_error_dashboard/plugins/jira_integration_plugin.rb
283
+ - lib/rails_error_dashboard/plugins/metrics_plugin.rb
284
+ - lib/rails_error_dashboard/queries/analytics_stats.rb
285
+ - lib/rails_error_dashboard/queries/dashboard_stats.rb
286
+ - lib/rails_error_dashboard/queries/developer_insights.rb
287
+ - lib/rails_error_dashboard/queries/errors_list.rb
288
+ - lib/rails_error_dashboard/queries/errors_list_v2.rb
289
+ - lib/rails_error_dashboard/queries/filter_options.rb
290
+ - lib/rails_error_dashboard/services/platform_detector.rb
291
+ - lib/rails_error_dashboard/value_objects/error_context.rb
292
+ - lib/rails_error_dashboard/version.rb
293
+ - lib/tasks/rails_error_dashboard_tasks.rake
294
+ homepage: https://github.com/AnjanJ/rails_error_dashboard
295
+ licenses:
296
+ - MIT
297
+ metadata:
298
+ homepage_uri: https://github.com/AnjanJ/rails_error_dashboard
299
+ source_code_uri: https://github.com/AnjanJ/rails_error_dashboard
300
+ changelog_uri: https://github.com/AnjanJ/rails_error_dashboard/blob/main/CHANGELOG.md
301
+ rdoc_options: []
302
+ require_paths:
303
+ - lib
304
+ required_ruby_version: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: 3.2.0
309
+ required_rubygems_version: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ requirements: []
315
+ rubygems_version: 3.7.2
316
+ specification_version: 4
317
+ summary: Beautiful error tracking dashboard for Rails applications (BETA)
318
+ test_files: []