lapsoss 0.1.0 → 0.3.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +153 -733
  3. data/lib/lapsoss/adapters/appsignal_adapter.rb +7 -8
  4. data/lib/lapsoss/adapters/base.rb +0 -3
  5. data/lib/lapsoss/adapters/bugsnag_adapter.rb +12 -0
  6. data/lib/lapsoss/adapters/insight_hub_adapter.rb +102 -101
  7. data/lib/lapsoss/adapters/logger_adapter.rb +7 -7
  8. data/lib/lapsoss/adapters/rollbar_adapter.rb +93 -54
  9. data/lib/lapsoss/adapters/sentry_adapter.rb +11 -17
  10. data/lib/lapsoss/backtrace_frame.rb +35 -214
  11. data/lib/lapsoss/backtrace_frame_factory.rb +228 -0
  12. data/lib/lapsoss/backtrace_processor.rb +37 -37
  13. data/lib/lapsoss/client.rb +2 -6
  14. data/lib/lapsoss/configuration.rb +25 -22
  15. data/lib/lapsoss/current.rb +9 -1
  16. data/lib/lapsoss/event.rb +30 -6
  17. data/lib/lapsoss/exception_backtrace_frame.rb +39 -0
  18. data/lib/lapsoss/exclusion_configuration.rb +30 -0
  19. data/lib/lapsoss/exclusion_filter.rb +156 -0
  20. data/lib/lapsoss/{exclusions.rb → exclusion_presets.rb} +1 -181
  21. data/lib/lapsoss/fingerprinter.rb +9 -13
  22. data/lib/lapsoss/http_client.rb +42 -8
  23. data/lib/lapsoss/merged_scope.rb +63 -0
  24. data/lib/lapsoss/middleware/base.rb +15 -0
  25. data/lib/lapsoss/middleware/conditional_filter.rb +18 -0
  26. data/lib/lapsoss/middleware/event_enricher.rb +19 -0
  27. data/lib/lapsoss/middleware/event_transformer.rb +19 -0
  28. data/lib/lapsoss/middleware/exception_filter.rb +43 -0
  29. data/lib/lapsoss/middleware/metrics_collector.rb +44 -0
  30. data/lib/lapsoss/middleware/rate_limiter.rb +31 -0
  31. data/lib/lapsoss/middleware/release_tracker.rb +117 -0
  32. data/lib/lapsoss/middleware/sample_filter.rb +23 -0
  33. data/lib/lapsoss/middleware/sampling_middleware.rb +18 -0
  34. data/lib/lapsoss/middleware/user_context_enhancer.rb +46 -0
  35. data/lib/lapsoss/middleware.rb +0 -347
  36. data/lib/lapsoss/pipeline.rb +1 -73
  37. data/lib/lapsoss/pipeline_builder.rb +69 -0
  38. data/lib/lapsoss/rails_error_subscriber.rb +42 -0
  39. data/lib/lapsoss/rails_middleware.rb +78 -0
  40. data/lib/lapsoss/railtie.rb +22 -50
  41. data/lib/lapsoss/registry.rb +34 -20
  42. data/lib/lapsoss/release_providers.rb +110 -0
  43. data/lib/lapsoss/release_tracker.rb +112 -207
  44. data/lib/lapsoss/router.rb +3 -5
  45. data/lib/lapsoss/sampling/adaptive_sampler.rb +46 -0
  46. data/lib/lapsoss/sampling/base.rb +11 -0
  47. data/lib/lapsoss/sampling/composite_sampler.rb +26 -0
  48. data/lib/lapsoss/sampling/consistent_hash_sampler.rb +30 -0
  49. data/lib/lapsoss/sampling/exception_type_sampler.rb +44 -0
  50. data/lib/lapsoss/sampling/health_based_sampler.rb +19 -0
  51. data/lib/lapsoss/sampling/rate_limiter.rb +32 -0
  52. data/lib/lapsoss/sampling/sampling_factory.rb +69 -0
  53. data/lib/lapsoss/sampling/time_based_sampler.rb +44 -0
  54. data/lib/lapsoss/sampling/uniform_sampler.rb +15 -0
  55. data/lib/lapsoss/sampling/user_based_sampler.rb +42 -0
  56. data/lib/lapsoss/sampling.rb +0 -326
  57. data/lib/lapsoss/scope.rb +17 -57
  58. data/lib/lapsoss/scrubber.rb +16 -18
  59. data/lib/lapsoss/user_context.rb +18 -198
  60. data/lib/lapsoss/user_context_integrations.rb +39 -0
  61. data/lib/lapsoss/user_context_middleware.rb +50 -0
  62. data/lib/lapsoss/user_context_provider.rb +93 -0
  63. data/lib/lapsoss/utils.rb +13 -0
  64. data/lib/lapsoss/validators.rb +14 -27
  65. data/lib/lapsoss/version.rb +1 -1
  66. data/lib/lapsoss.rb +12 -25
  67. metadata +106 -21
data/lib/lapsoss.rb CHANGED
@@ -1,22 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lapsoss/version"
4
- require_relative "lapsoss/configuration"
5
- require_relative "lapsoss/registry"
6
- require_relative "lapsoss/event"
7
- require_relative "lapsoss/router"
8
- require_relative "lapsoss/adapters/base"
9
- require_relative "lapsoss/current"
10
- require_relative "lapsoss/client"
11
- require_relative "lapsoss/fingerprinter"
12
- require_relative "lapsoss/backtrace_processor"
13
- require_relative "lapsoss/scrubber"
14
- require_relative "lapsoss/pipeline"
15
- require_relative "lapsoss/sampling"
16
- require_relative "lapsoss/user_context"
17
- require_relative "lapsoss/exclusions"
18
- require_relative "lapsoss/release_tracker"
19
- require_relative "lapsoss/railtie" if defined?(Rails)
3
+ require "zeitwerk"
4
+ require "active_support/core_ext/module/delegation"
5
+
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.do_not_eager_load("#{__dir__}/lapsoss/adapters")
8
+ loader.setup
9
+
10
+ require_relative "lapsoss/railtie" if defined?(Rails::Railtie)
20
11
 
21
12
  module Lapsoss
22
13
  class Error < StandardError; end
@@ -57,20 +48,16 @@ module Lapsoss
57
48
  client.add_breadcrumb(message, type: type, **metadata)
58
49
  end
59
50
 
60
- def with_scope(context = {}, &block)
61
- client.with_scope(context, &block)
51
+ def with_scope(context = {}, &)
52
+ client.with_scope(context, &)
62
53
  end
63
54
 
64
- def current_scope
65
- client.current_scope
66
- end
55
+ delegate :current_scope, to: :client
67
56
 
68
57
  def flush(timeout: 2)
69
58
  client.flush(timeout: timeout)
70
59
  end
71
60
 
72
- def shutdown
73
- client.shutdown
74
- end
61
+ delegate :shutdown, to: :client
75
62
  end
76
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lapsoss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -10,33 +10,33 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: concurrent-ruby
13
+ name: activesupport
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '1.0'
18
+ version: '7.2'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '1.0'
25
+ version: '7.2'
26
26
  - !ruby/object:Gem::Dependency
27
- name: activesupport
27
+ name: concurrent-ruby
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '7.2'
32
+ version: 1.3.1
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '7.2'
39
+ version: 1.3.1
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: faraday
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -66,47 +66,53 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: dotenv
69
+ name: zeitwerk
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.0'
75
- type: :development
74
+ version: '2.6'
75
+ type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '3.0'
81
+ version: '2.6'
82
82
  - !ruby/object:Gem::Dependency
83
- name: vcr
83
+ name: async-http-faraday
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '6.0'
89
- type: :development
88
+ version: '0.19'
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 0.19.0
92
+ type: :runtime
90
93
  prerelease: false
91
94
  version_requirements: !ruby/object:Gem::Requirement
92
95
  requirements:
93
96
  - - "~>"
94
97
  - !ruby/object:Gem::Version
95
- version: '6.0'
98
+ version: '0.19'
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: 0.19.0
96
102
  - !ruby/object:Gem::Dependency
97
- name: webmock
103
+ name: dotenv
98
104
  requirement: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - "~>"
101
107
  - !ruby/object:Gem::Version
102
- version: '3.18'
108
+ version: '3.0'
103
109
  type: :development
104
110
  prerelease: false
105
111
  version_requirements: !ruby/object:Gem::Requirement
106
112
  requirements:
107
113
  - - "~>"
108
114
  - !ruby/object:Gem::Version
109
- version: '3.18'
115
+ version: '3.0'
110
116
  - !ruby/object:Gem::Dependency
111
117
  name: rake
112
118
  requirement: !ruby/object:Gem::Requirement
@@ -135,6 +141,20 @@ dependencies:
135
141
  - - "~>"
136
142
  - !ruby/object:Gem::Version
137
143
  version: '1.0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: rubocop-rails-omakase
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.0'
138
158
  - !ruby/object:Gem::Dependency
139
159
  name: steep
140
160
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +169,34 @@ dependencies:
149
169
  - - "~>"
150
170
  - !ruby/object:Gem::Version
151
171
  version: '1.0'
172
+ - !ruby/object:Gem::Dependency
173
+ name: vcr
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '6.0'
179
+ type: :development
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '6.0'
186
+ - !ruby/object:Gem::Dependency
187
+ name: webmock
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.18'
193
+ type: :development
194
+ prerelease: false
195
+ version_requirements: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '3.18'
152
200
  description: Lapsoss provides a clean, adapter-based approach to error reporting that
153
201
  doesn't monkey patch your application. Send errors to any error tracking service
154
202
  or custom backend through a unified API.
@@ -164,29 +212,65 @@ files:
164
212
  - lib/lapsoss.rb
165
213
  - lib/lapsoss/adapters/appsignal_adapter.rb
166
214
  - lib/lapsoss/adapters/base.rb
215
+ - lib/lapsoss/adapters/bugsnag_adapter.rb
167
216
  - lib/lapsoss/adapters/insight_hub_adapter.rb
168
217
  - lib/lapsoss/adapters/logger_adapter.rb
169
218
  - lib/lapsoss/adapters/rollbar_adapter.rb
170
219
  - lib/lapsoss/adapters/sentry_adapter.rb
171
220
  - lib/lapsoss/backtrace_frame.rb
221
+ - lib/lapsoss/backtrace_frame_factory.rb
172
222
  - lib/lapsoss/backtrace_processor.rb
173
223
  - lib/lapsoss/client.rb
174
224
  - lib/lapsoss/configuration.rb
175
225
  - lib/lapsoss/current.rb
176
226
  - lib/lapsoss/event.rb
177
- - lib/lapsoss/exclusions.rb
227
+ - lib/lapsoss/exception_backtrace_frame.rb
228
+ - lib/lapsoss/exclusion_configuration.rb
229
+ - lib/lapsoss/exclusion_filter.rb
230
+ - lib/lapsoss/exclusion_presets.rb
178
231
  - lib/lapsoss/fingerprinter.rb
179
232
  - lib/lapsoss/http_client.rb
233
+ - lib/lapsoss/merged_scope.rb
180
234
  - lib/lapsoss/middleware.rb
235
+ - lib/lapsoss/middleware/base.rb
236
+ - lib/lapsoss/middleware/conditional_filter.rb
237
+ - lib/lapsoss/middleware/event_enricher.rb
238
+ - lib/lapsoss/middleware/event_transformer.rb
239
+ - lib/lapsoss/middleware/exception_filter.rb
240
+ - lib/lapsoss/middleware/metrics_collector.rb
241
+ - lib/lapsoss/middleware/rate_limiter.rb
242
+ - lib/lapsoss/middleware/release_tracker.rb
243
+ - lib/lapsoss/middleware/sample_filter.rb
244
+ - lib/lapsoss/middleware/sampling_middleware.rb
245
+ - lib/lapsoss/middleware/user_context_enhancer.rb
181
246
  - lib/lapsoss/pipeline.rb
247
+ - lib/lapsoss/pipeline_builder.rb
248
+ - lib/lapsoss/rails_error_subscriber.rb
249
+ - lib/lapsoss/rails_middleware.rb
182
250
  - lib/lapsoss/railtie.rb
183
251
  - lib/lapsoss/registry.rb
252
+ - lib/lapsoss/release_providers.rb
184
253
  - lib/lapsoss/release_tracker.rb
185
254
  - lib/lapsoss/router.rb
186
255
  - lib/lapsoss/sampling.rb
256
+ - lib/lapsoss/sampling/adaptive_sampler.rb
257
+ - lib/lapsoss/sampling/base.rb
258
+ - lib/lapsoss/sampling/composite_sampler.rb
259
+ - lib/lapsoss/sampling/consistent_hash_sampler.rb
260
+ - lib/lapsoss/sampling/exception_type_sampler.rb
261
+ - lib/lapsoss/sampling/health_based_sampler.rb
262
+ - lib/lapsoss/sampling/rate_limiter.rb
263
+ - lib/lapsoss/sampling/sampling_factory.rb
264
+ - lib/lapsoss/sampling/time_based_sampler.rb
265
+ - lib/lapsoss/sampling/uniform_sampler.rb
266
+ - lib/lapsoss/sampling/user_based_sampler.rb
187
267
  - lib/lapsoss/scope.rb
188
268
  - lib/lapsoss/scrubber.rb
189
269
  - lib/lapsoss/user_context.rb
270
+ - lib/lapsoss/user_context_integrations.rb
271
+ - lib/lapsoss/user_context_middleware.rb
272
+ - lib/lapsoss/user_context_provider.rb
273
+ - lib/lapsoss/utils.rb
190
274
  - lib/lapsoss/validators.rb
191
275
  - lib/lapsoss/version.rb
192
276
  homepage: https://github.com/seuros/lapsoss
@@ -197,6 +281,7 @@ metadata:
197
281
  homepage_uri: https://github.com/seuros/lapsoss
198
282
  source_code_uri: https://github.com/seuros/lapsoss
199
283
  changelog_uri: https://github.com/seuros/lapsoss/blob/main/CHANGELOG.md
284
+ rubygems_mfa_required: 'true'
200
285
  rdoc_options: []
201
286
  require_paths:
202
287
  - lib