Skip to content

Commit c1fb5f3

Browse files
authored
Merge pull request #21 from frograms/fix/fingerprint
🔧 Insert digest_backtrace to fingerprint after initialize
2 parents f683387 + f63045d commit c1fb5f3

File tree

4 files changed

+10
-7
lines changed

4 files changed

+10
-7
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
coaster (1.4.22)
4+
coaster (1.4.24)
55
activesupport (>= 7.0.7)
66
attr_extras (~> 5.2)
77
i18n (>= 1.0)
@@ -137,7 +137,7 @@ GEM
137137
nokogiri (1.16.5)
138138
mini_portile2 (~> 2.8.2)
139139
racc (~> 1.4)
140-
oj (3.16.7)
140+
oj (3.16.9)
141141
bigdecimal (>= 3.0)
142142
ostruct (>= 0.2)
143143
ostruct (0.6.1)

lib/coaster/core_ext/standard_error.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ def after_logging_blocks
6363
end
6464
end
6565

66-
attr_accessor :tags, :level, :tkey, :fingerprint
66+
attr_accessor :tags, :level, :tkey
67+
attr_writer :fingerprint
6768

6869
def initialize(message = nil, cause = $!)
6970
@fingerprint = Coaster.default_fingerprint.dup
@@ -122,11 +123,12 @@ def initialize(message = nil, cause = $!)
122123
@digest_message = self.class.digest_message(msg)
123124
set_backtrace(message.backtrace) if message.is_a?(Exception)
124125
@fingerprint << @digest_message
125-
@fingerprint << digest_backtrace
126126
@fingerprint.compact!
127127
self
128128
end
129129

130+
# @return [Array, NilClass] fingerprint
131+
def fingerprint; @fingerprint.is_a?(Array) && @fingerprint + [digest_backtrace] end
130132
def safe_message; message || '' end
131133
def digest_message; @digest_message ||= self.class.digest_message(message) end
132134
def digest_backtrace; @digest_backtrace ||= backtrace ? Digest::MD5.hexdigest(cleaned_backtrace.join("\n"))[0...8] : nil end
@@ -232,6 +234,7 @@ def to_inspection_hash(options: {}, _h: {}.with_indifferent_access, _depth: 0)
232234
http_status: http_status, message: message,
233235
instance_variables: {}.with_indifferent_access
234236
)
237+
digest_backtrace # for @digest_backtrace
235238
instance_variables.sort.each do |var|
236239
if inspection_vars.include?(var)
237240
val = instance_variable_get(var)

lib/coaster/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Coaster
2-
VERSION = '1.4.23'
2+
VERSION = '1.4.25'
33
end

test/test_standard_error.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def test_to_detail
213213
MESSAGE: Test example error (Coaster::TestStandardError::ExampleError) cause{Test sample error (Coaster::TestStandardError::SampleError)}
214214
@attributes: {\"frog\"=>\"rams\", \"wat\"=>\"cha\"}
215215
@coaster: true
216-
@digest_backtrace: NilClass
216+
@digest_backtrace: #{e.digest_backtrace}
217217
@digest_message: a8c7c1
218218
@fingerprint: ["a8c7c1"]
219219
@ins_var: [\"Coaster::TestStandardError::SampleError\", {\"h\"=>1}]
@@ -231,7 +231,7 @@ def test_to_detail
231231
MESSAGE: Test sample error (Coaster::TestStandardError::SampleError)
232232
@attributes: {"frog"=>"rams"}
233233
@coaster: true
234-
@digest_backtrace: NilClass
234+
@digest_backtrace: #{e.cause.digest_backtrace}
235235
@digest_message: cbe233
236236
@fingerprint: ["cbe233"]
237237
@level: "error"

0 commit comments

Comments
 (0)