peak_flow_utils 0.1.25 → 0.1.27

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: b9305168103103b720ed0d20a835b4e6459b15ff40a1823fee5ae1dea74bd231
4
- data.tar.gz: 25a145324e7c4bcfe85e5cf2e2d7a22e70c32a24b2dd797037b316ef108720ad
3
+ metadata.gz: d3e98cbd0f73efee4f3fe4bb4402c959359be3f711d935e9060f86f20ebae56f
4
+ data.tar.gz: e63aa1314f76a6b3eca83356275f9a8d5e635977baf56ea7bdb488b5c087dfcd
5
5
  SHA512:
6
- metadata.gz: 248161e864a5530e6446a670a0d8647b9846654de41fe880d3bb00cd6eddaa5131fbcfea0b9c01012790764b025b5a54b6ce0ce679aa6a9dac46e5251a65fab7
7
- data.tar.gz: c125d6c89b8c8c9f3a2366532f67756912db5335c5ee3738fc9efd48516f8e580caf3b51dac2626fcb69bd17ed2320a10ffbca90fc279b6040d8024c8b85cf15
6
+ metadata.gz: 3c48c62df3d0432f2e37cd1f02b6f314b5c7f3bbfebf6409a0ce607aba86b93fc858b0b42767d62519a627c9c2241c181e80b6582eb9e7925f28bd3525f439f8
7
+ data.tar.gz: 75df8dd79b7db0614f70bd90627d93c80b9ff1814425af09e83f0318e853d95d29bba6c5d80b31c460ecb68e52ec120b0fcca01ca0016bfd6eeaefc30be4b61e
data/README.md CHANGED
@@ -32,6 +32,8 @@ PeakFlowUtils::Notifier.configure(auth_token: "your-token")
32
32
  PeakFlowUtils::Notifier.notify(error: error)
33
33
  ```
34
34
 
35
+ Errors that escape a `PeakFlowUtils::Notifier.with_parameters` block keep a snapshot of the scoped parameters. Later framework handlers, such as Sidekiq error handlers, can report the same error after the block has unwound and still include the captured context.
36
+
35
37
  ### Reporting Rails errors
36
38
 
37
39
  Add this to `config/peakflow.rb`:
@@ -2,6 +2,6 @@ require "rails"
2
2
 
3
3
  module PeakFlowUtils; end
4
4
 
5
- class PeakFlowUtils::Engine < Rails::Engine
5
+ class PeakFlowUtils::Engine < Rails::Engine # rubocop:disable Style/OneClassPerFile
6
6
  isolate_namespace PeakFlowUtils
7
7
  end
@@ -3,6 +3,8 @@ class PeakFlowUtils::Notifier
3
3
  class NotConfiguredError < RuntimeError; end
4
4
  class NotifyMessageError < RuntimeError; end
5
5
 
6
+ CAPTURED_PARAMETERS_INSTANCE_VARIABLE = :@peak_flow_utils_captured_parameters
7
+
6
8
  attr_reader :auth_token, :mutex, :parameters
7
9
 
8
10
  def self.configure(auth_token:)
@@ -45,6 +47,9 @@ class PeakFlowUtils::Notifier
45
47
 
46
48
  begin
47
49
  yield
50
+ rescue StandardError => e
51
+ ::PeakFlowUtils::Notifier.current.capture_parameters_for_error(e)
52
+ raise
48
53
  ensure
49
54
  ::PeakFlowUtils::Notifier.current.mutex.synchronize do
50
55
  current_parameters = ::PeakFlowUtils::Notifier.current.parameters.value
@@ -60,8 +65,22 @@ class PeakFlowUtils::Notifier
60
65
  @parameters = ::PeakFlowUtils::InheritedLocalVar.new({})
61
66
  end
62
67
 
63
- def current_parameters(parameters: nil)
68
+ def capture_parameters_for_error(error)
69
+ return if error.instance_variable_defined?(CAPTURED_PARAMETERS_INSTANCE_VARIABLE)
70
+
71
+ error.instance_variable_set(CAPTURED_PARAMETERS_INSTANCE_VARIABLE, current_parameters)
72
+ end
73
+
74
+ def captured_parameters_for_error(error)
75
+ return unless error&.instance_variable_defined?(CAPTURED_PARAMETERS_INSTANCE_VARIABLE)
76
+
77
+ error.instance_variable_get(CAPTURED_PARAMETERS_INSTANCE_VARIABLE)
78
+ end
79
+
80
+ def current_parameters(error: nil, parameters: nil)
64
81
  hashes = current_parameters_hashes
82
+ captured_parameters = captured_parameters_for_error(error)
83
+ hashes << captured_parameters if captured_parameters
65
84
  hashes << parameters if parameters
66
85
 
67
86
  ::PeakFlowUtils::DeepMerger.execute!(hashes: hashes)
@@ -90,7 +109,7 @@ class PeakFlowUtils::Notifier
90
109
  error: error
91
110
  )
92
111
 
93
- merged_parameters = current_parameters(parameters: parameters)
112
+ merged_parameters = current_parameters(error: error, parameters: parameters)
94
113
 
95
114
  uri = URI("https://www.peakflow.io/errors/reports")
96
115
 
@@ -1,3 +1,3 @@
1
1
  module PeakFlowUtils
2
- VERSION = "0.1.25".freeze
2
+ VERSION = "0.1.27".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peak_flow_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.25
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-31 00:00:00.000000000 Z
11
+ date: 2026-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails