action_reporter 2.0.0 → 2.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 966d8f43c69d090e7c05c60571b9514f70a78dc1f16406c50610c9003e02a9e5
4
- data.tar.gz: b04f3e1ecc0a98d68b58169c25df6ad0a3ebbd23bc486b090cf8706b4e6b5b35
3
+ metadata.gz: aabef092878a25b94f003857a4490ae941458a23f10a645f90967c2410f6abfd
4
+ data.tar.gz: 26e8cda7492641af36a02b4320a415fc1b1afabb530f7dcb06f475c8ece39d43
5
5
  SHA512:
6
- metadata.gz: 6ccd9608cf52f7eb887102e12011b3f889cb7d06c171ddc46aa06c0a7ac69d9330dd7a377b12da3c3b17e71254bd940fe1f69f9f590401fcc3e02c6a29129f9f
7
- data.tar.gz: 4f389d9305525cd87a2eb9b0b8f09765867e2195060c88b6fd942199bfcd5f4e118f9b896011b027f62cf55ed6a7965641455226ad479c0dbf32d48c457771b2
6
+ metadata.gz: 490769c5999f15251385b654ec9a0e8e65b11b8f50e4f3c21d974b72bc3d2d8036852d9dfab8f108931b3809ddf9e9ef9dd7265bd88adc710febe91ef659c969
7
+ data.tar.gz: fbef1b1338b491ba88f792cb5dc1de0a218b4b7d914430ae3f607bfaccd7bd3cb0eb1d2b2694a80c2417b75748a91043d34efc2a034b3944fefd640f37bfe63c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.0.2 (2026-03-13)
4
+
5
+ - Add `ActiveVersionReporter` integration for the `active_version` gem
6
+ - Support context propagation via `ActiveVersion.context`
7
+ - Support current user, request UUID, and remote address through `ActiveVersion::RequestStore`
8
+
9
+ ## 2.0.1 (2025-11-14)
10
+
11
+ - Fix false positives in gem version validation for git-based gems
12
+ - Remove strict version requirement check that caused `ConfigurationError` for valid git-based gem installations
13
+ - Class existence check is sufficient to ensure gem is loaded
14
+ - Fixes issue where `sentry-ruby` and other git-based gems were incorrectly flagged as not loaded
15
+
3
16
  ## 2.0.0 (2025-11-05)
4
17
 
5
18
  - Add performance benchmarks to measure CPU, memory, and response-time impact
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # action_reporter
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/action_reporter.svg)](https://badge.fury.io/rb/action_reporter) [![Test Status](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml/badge.svg)](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/amkisko/action_reporter.rb/graph/badge.svg?token=JCV2A7NWTE)](https://codecov.io/gh/amkisko/action_reporter.rb)
3
+ [![Gem Version](https://badge.fury.io/rb/action_reporter.svg)](https://badge.fury.io/rb/action_reporter) [![Test Status](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml/badge.svg)](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/amkisko/action_reporter.rb/graph/badge.svg?token=JCV2A7NWTE)](https://codecov.io/gh/amkisko/action_reporter.rb) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=amkisko_action_reporter.rb&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=amkisko_action_reporter.rb)
4
4
 
5
5
  Ruby wrapper for multiple reporting services.
6
6
 
7
- Supported services: Rails logger, gem audited, gem PaperTrail, Sentry, Honeybadger, scoutapm.
7
+ Supported services: Rails logger, gem audited, gem PaperTrail, gem ActiveVersion, Sentry, Honeybadger, scoutapm.
8
8
 
9
9
  Sponsored by [Kisko Labs](https://www.kiskolabs.com).
10
10
 
@@ -33,6 +33,7 @@ ActionReporter.enabled_reporters = [
33
33
  (ActionReporter::RailsReporter.new if Rails.env.development?),
34
34
  # ActionReporter::AuditedReporter.new,
35
35
  # ActionReporter::PaperTrailReporter.new,
36
+ # ActionReporter::ActiveVersionReporter.new,
36
37
  # ActionReporter::SentryReporter.new,
37
38
  # ActionReporter::HoneybadgerReporter.new,
38
39
  # ActionReporter::ScoutApmReporter.new
@@ -138,7 +139,7 @@ end
138
139
 
139
140
  ```bash
140
141
  bundle install
141
- bundle exec appraisal install
142
+ bundle exec appraisal generate
142
143
  bundle exec rspec
143
144
  bin/appraisals
144
145
  bundle exec standardrb --fix
@@ -38,15 +38,23 @@ Gem::Specification.new do |gem|
38
38
  gem.add_development_dependency "sentry-ruby", "~> 5"
39
39
  gem.add_development_dependency "scout_apm", "~> 5"
40
40
  gem.add_development_dependency "paper_trail", "~> 15"
41
+ gem.add_development_dependency "active_version", "~> 1"
41
42
 
42
43
  gem.add_development_dependency "bundler", "~> 2"
43
- gem.add_development_dependency "rspec", "~> 3.12"
44
+ gem.add_development_dependency "rspec", "~> 3"
44
45
  gem.add_development_dependency "rspec_junit_formatter", "~> 0.6"
45
46
  gem.add_development_dependency "webmock", "~> 3"
46
- gem.add_development_dependency "pry", "~> 0.14"
47
- gem.add_development_dependency "simplecov", "~> 0.21"
47
+ gem.add_development_dependency "pry", "~> 0.15"
48
+ gem.add_development_dependency "simplecov", "~> 0.22"
48
49
  gem.add_development_dependency "simplecov-cobertura", "~> 3"
49
- gem.add_development_dependency "standard", "~> 1.0"
50
- gem.add_development_dependency "appraisal", "~> 2.4"
51
- gem.add_development_dependency "rbs", "~> 3.0"
50
+ gem.add_development_dependency "standard", "~> 1.52"
51
+ gem.add_development_dependency "standard-custom", "~> 1.0"
52
+ gem.add_development_dependency "standard-performance", "~> 1.8"
53
+ gem.add_development_dependency "standard-rails", "~> 1.5"
54
+ gem.add_development_dependency "standard-rspec", "~> 0.3"
55
+ gem.add_development_dependency "rubocop-rails", "~> 2.33"
56
+ gem.add_development_dependency "rubocop-rspec", "~> 3.8"
57
+ gem.add_development_dependency "rubocop-thread_safety", "~> 0.7"
58
+ gem.add_development_dependency "appraisal", "~> 2"
59
+ gem.add_development_dependency "rbs", "~> 3"
52
60
  end
@@ -0,0 +1,50 @@
1
+ module ActionReporter
2
+ class ActiveVersionReporter < Base
3
+ class_accessor "ActiveVersion", gem_spec: "active_version (~> 1)"
4
+
5
+ def notify(*)
6
+ end
7
+
8
+ def context(args)
9
+ ActiveVersion.context = ActiveVersion.context.merge(args) if ActiveVersion.respond_to?(:context=)
10
+ end
11
+
12
+ def reset_context
13
+ request_store = request_store_class
14
+ request_store.request_uuid = nil if request_store&.respond_to?(:request_uuid=)
15
+ request_store.remote_address = nil if request_store&.respond_to?(:remote_address=)
16
+ request_store.audited_user = nil if request_store&.respond_to?(:audited_user=)
17
+ ActiveVersion.context = {} if ActiveVersion.respond_to?(:context=)
18
+ end
19
+
20
+ def current_user
21
+ request_store_class&.audited_user
22
+ end
23
+
24
+ def current_user=(user)
25
+ request_store_class.audited_user = user if request_store_class&.respond_to?(:audited_user=)
26
+ end
27
+
28
+ def current_request_uuid
29
+ request_store_class&.request_uuid
30
+ end
31
+
32
+ def current_request_uuid=(request_uuid)
33
+ request_store_class.request_uuid = request_uuid if request_store_class&.respond_to?(:request_uuid=)
34
+ end
35
+
36
+ def current_remote_addr
37
+ request_store_class&.remote_address
38
+ end
39
+
40
+ def current_remote_addr=(remote_addr)
41
+ request_store_class.remote_address = remote_addr if request_store_class&.respond_to?(:remote_address=)
42
+ end
43
+
44
+ private
45
+
46
+ def request_store_class
47
+ ActiveVersion::RequestStore if ActiveVersion.const_defined?(:RequestStore)
48
+ end
49
+ end
50
+ end
@@ -10,15 +10,7 @@ module ActionReporter
10
10
  # Use instance variable instead of class variable for thread safety
11
11
  # Each class gets its own cache, avoiding cross-class contamination
12
12
  @class_cache ||= {}
13
- @class_cache[class_name] ||= begin
14
- if gem_spec
15
- gem_name, version = gem_spec.scan(/([^(\s]+)\s*(?:\(([^)]+)\))?/).first
16
- latest_spec = Gem.loaded_specs[gem_name]
17
- version_satisfied = latest_spec && Gem::Requirement.new(version).satisfied_by?(latest_spec.version)
18
- raise ActionReporter::ConfigurationError.new("#{gem_spec} is not loaded") if !version_satisfied
19
- end
20
- Object.const_get(class_name)
21
- end
13
+ @class_cache[class_name] ||= Object.const_get(class_name)
22
14
  end
23
15
  end
24
16
 
@@ -1,3 +1,3 @@
1
1
  module ActionReporter
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.2"
3
3
  end
@@ -12,6 +12,7 @@ require "action_reporter/sentry_reporter"
12
12
  require "action_reporter/scout_apm_reporter"
13
13
  require "action_reporter/audited_reporter"
14
14
  require "action_reporter/paper_trail_reporter"
15
+ require "action_reporter/active_version_reporter"
15
16
 
16
17
  module ActionReporter
17
18
  module_function
@@ -24,7 +25,8 @@ module ActionReporter
24
25
  ActionReporter::SentryReporter,
25
26
  ActionReporter::ScoutApmReporter,
26
27
  ActionReporter::AuditedReporter,
27
- ActionReporter::PaperTrailReporter
28
+ ActionReporter::PaperTrailReporter,
29
+ ActionReporter::ActiveVersionReporter
28
30
  ].freeze
29
31
 
30
32
  # Get available reporters (auto-discovered + registered)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Makarov
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-11-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -94,6 +93,20 @@ dependencies:
94
93
  - - "~>"
95
94
  - !ruby/object:Gem::Version
96
95
  version: '15'
96
+ - !ruby/object:Gem::Dependency
97
+ name: active_version
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: bundler
99
112
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +127,14 @@ dependencies:
114
127
  requirements:
115
128
  - - "~>"
116
129
  - !ruby/object:Gem::Version
117
- version: '3.12'
130
+ version: '3'
118
131
  type: :development
119
132
  prerelease: false
120
133
  version_requirements: !ruby/object:Gem::Requirement
121
134
  requirements:
122
135
  - - "~>"
123
136
  - !ruby/object:Gem::Version
124
- version: '3.12'
137
+ version: '3'
125
138
  - !ruby/object:Gem::Dependency
126
139
  name: rspec_junit_formatter
127
140
  requirement: !ruby/object:Gem::Requirement
@@ -156,28 +169,28 @@ dependencies:
156
169
  requirements:
157
170
  - - "~>"
158
171
  - !ruby/object:Gem::Version
159
- version: '0.14'
172
+ version: '0.15'
160
173
  type: :development
161
174
  prerelease: false
162
175
  version_requirements: !ruby/object:Gem::Requirement
163
176
  requirements:
164
177
  - - "~>"
165
178
  - !ruby/object:Gem::Version
166
- version: '0.14'
179
+ version: '0.15'
167
180
  - !ruby/object:Gem::Dependency
168
181
  name: simplecov
169
182
  requirement: !ruby/object:Gem::Requirement
170
183
  requirements:
171
184
  - - "~>"
172
185
  - !ruby/object:Gem::Version
173
- version: '0.21'
186
+ version: '0.22'
174
187
  type: :development
175
188
  prerelease: false
176
189
  version_requirements: !ruby/object:Gem::Requirement
177
190
  requirements:
178
191
  - - "~>"
179
192
  - !ruby/object:Gem::Version
180
- version: '0.21'
193
+ version: '0.22'
181
194
  - !ruby/object:Gem::Dependency
182
195
  name: simplecov-cobertura
183
196
  requirement: !ruby/object:Gem::Requirement
@@ -194,6 +207,20 @@ dependencies:
194
207
  version: '3'
195
208
  - !ruby/object:Gem::Dependency
196
209
  name: standard
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.52'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '1.52'
222
+ - !ruby/object:Gem::Dependency
223
+ name: standard-custom
197
224
  requirement: !ruby/object:Gem::Requirement
198
225
  requirements:
199
226
  - - "~>"
@@ -206,34 +233,118 @@ dependencies:
206
233
  - - "~>"
207
234
  - !ruby/object:Gem::Version
208
235
  version: '1.0'
236
+ - !ruby/object:Gem::Dependency
237
+ name: standard-performance
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.8'
243
+ type: :development
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '1.8'
250
+ - !ruby/object:Gem::Dependency
251
+ name: standard-rails
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: '1.5'
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '1.5'
264
+ - !ruby/object:Gem::Dependency
265
+ name: standard-rspec
266
+ requirement: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '0.3'
271
+ type: :development
272
+ prerelease: false
273
+ version_requirements: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '0.3'
278
+ - !ruby/object:Gem::Dependency
279
+ name: rubocop-rails
280
+ requirement: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '2.33'
285
+ type: :development
286
+ prerelease: false
287
+ version_requirements: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '2.33'
292
+ - !ruby/object:Gem::Dependency
293
+ name: rubocop-rspec
294
+ requirement: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '3.8'
299
+ type: :development
300
+ prerelease: false
301
+ version_requirements: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - "~>"
304
+ - !ruby/object:Gem::Version
305
+ version: '3.8'
306
+ - !ruby/object:Gem::Dependency
307
+ name: rubocop-thread_safety
308
+ requirement: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - "~>"
311
+ - !ruby/object:Gem::Version
312
+ version: '0.7'
313
+ type: :development
314
+ prerelease: false
315
+ version_requirements: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - "~>"
318
+ - !ruby/object:Gem::Version
319
+ version: '0.7'
209
320
  - !ruby/object:Gem::Dependency
210
321
  name: appraisal
211
322
  requirement: !ruby/object:Gem::Requirement
212
323
  requirements:
213
324
  - - "~>"
214
325
  - !ruby/object:Gem::Version
215
- version: '2.4'
326
+ version: '2'
216
327
  type: :development
217
328
  prerelease: false
218
329
  version_requirements: !ruby/object:Gem::Requirement
219
330
  requirements:
220
331
  - - "~>"
221
332
  - !ruby/object:Gem::Version
222
- version: '2.4'
333
+ version: '2'
223
334
  - !ruby/object:Gem::Dependency
224
335
  name: rbs
225
336
  requirement: !ruby/object:Gem::Requirement
226
337
  requirements:
227
338
  - - "~>"
228
339
  - !ruby/object:Gem::Version
229
- version: '3.0'
340
+ version: '3'
230
341
  type: :development
231
342
  prerelease: false
232
343
  version_requirements: !ruby/object:Gem::Requirement
233
344
  requirements:
234
345
  - - "~>"
235
346
  - !ruby/object:Gem::Version
236
- version: '3.0'
347
+ version: '3'
237
348
  description: Ruby wrapper for multiple reporting services
238
349
  email:
239
350
  - contact@kiskolabs.com
@@ -246,6 +357,7 @@ files:
246
357
  - README.md
247
358
  - action_reporter.gemspec
248
359
  - lib/action_reporter.rb
360
+ - lib/action_reporter/active_version_reporter.rb
249
361
  - lib/action_reporter/audited_reporter.rb
250
362
  - lib/action_reporter/base.rb
251
363
  - lib/action_reporter/current.rb
@@ -267,7 +379,6 @@ metadata:
267
379
  bug_tracker_uri: https://github.com/amkisko/action_reporter.rb/issues
268
380
  changelog_uri: https://github.com/amkisko/action_reporter.rb/blob/main/CHANGELOG.md
269
381
  rubygems_mfa_required: 'true'
270
- post_install_message:
271
382
  rdoc_options: []
272
383
  require_paths:
273
384
  - lib
@@ -282,8 +393,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
393
  - !ruby/object:Gem::Version
283
394
  version: '0'
284
395
  requirements: []
285
- rubygems_version: 3.5.11
286
- signing_key:
396
+ rubygems_version: 3.6.9
287
397
  specification_version: 4
288
398
  summary: See description
289
399
  test_files: []