coaster 1.4.33 → 1.4.34
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 +4 -4
- data/lib/coaster/core_ext/standard_error.rb +25 -17
- data/lib/coaster/version.rb +1 -1
- data/test/test_backtrace.rb +23 -1
- data/test/test_standard_error.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c5bdf67ef7ca8a26fb81e31cd731ff5df6782dde4fe4ad61ce3a0d4188eba728
|
|
4
|
+
data.tar.gz: a77b975d74ededc6caf7c74b26230c109907261b92f278bdecefa177d919685a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 26d9b5ef51cfa562faadf9268daa80ffb2a0d84b68bc5ff6b84d49b63d4d4c9c42d331f4bc90cd294fc220758f1a41364c25e644d82577a45b8c66bae7af8a3a
|
|
7
|
+
data.tar.gz: 0b441ed0b52264344fe15224e81117d7c8d55ce252b96e65fa7ce7a8be07b950eee1ec475189c1287a2bb9b7861f5417de7d81e21bbe65306822db1445f28a55
|
|
@@ -97,7 +97,7 @@ class StandardError
|
|
|
97
97
|
msg = hash.delete(:msg) || msg
|
|
98
98
|
msg = hash.delete(:message) || msg
|
|
99
99
|
hash[:description] ||= hash.delete(:desc) if hash[:desc].present?
|
|
100
|
-
@fingerprint = hash.delete(:fingerprint) || hash.delete(:fingerprints)
|
|
100
|
+
@fingerprint = Array.wrap(hash.delete(:fingerprint) || hash.delete(:fingerprints)) + @fingerprint
|
|
101
101
|
@tags = hash.delete(:tags) || hash.delete(:tag)
|
|
102
102
|
@level = hash.delete(:level) || hash.delete(:severity) || @level
|
|
103
103
|
@tkey = hash.delete(:tkey)
|
|
@@ -128,13 +128,31 @@ class StandardError
|
|
|
128
128
|
|
|
129
129
|
# @return [Array] fingerprint
|
|
130
130
|
def fingerprint
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
131
|
+
if @fingerprint.instance_variable_get(:@__processed__)
|
|
132
|
+
@fingerprint
|
|
133
|
+
else
|
|
134
|
+
@fingerprint = ((@fingerprint || []) + Coaster.default_fingerprint).flatten.compact.map do |fp|
|
|
135
|
+
case fp
|
|
136
|
+
when Symbol then send(fp)
|
|
137
|
+
when Proc then fp.call(self)
|
|
138
|
+
when Numeric then fp
|
|
139
|
+
else fp.to_s
|
|
140
|
+
end
|
|
141
|
+
rescue => e
|
|
142
|
+
@fingerprint_exception = {msg: e.message, bt: e.backtrace ? e.backtrace[0..5] : nil}
|
|
143
|
+
if fp.is_a?(Proc) & fp.source_location
|
|
144
|
+
f = fp.source_location[0].split('/').last(3).join('/')
|
|
145
|
+
"#{f}:#{fp.source_location[1]}"
|
|
146
|
+
else
|
|
147
|
+
fp.to_s
|
|
148
|
+
end
|
|
149
|
+
end.flatten.compact
|
|
150
|
+
@fingerprint.instance_variable_set(:@__processed__, true)
|
|
151
|
+
@fingerprint
|
|
152
|
+
end
|
|
137
153
|
end
|
|
154
|
+
alias_method :rails_tag, :fingerprint
|
|
155
|
+
|
|
138
156
|
def safe_message; message || '' end
|
|
139
157
|
def digest_message; @digest_message ||= self.class.digest_message(message) end
|
|
140
158
|
def digest_backtrace; @digest_backtrace ||= backtrace ? Digest::MD5.hexdigest(cleaned_backtrace.join("\n"))[0...8] : nil end
|
|
@@ -305,16 +323,6 @@ class StandardError
|
|
|
305
323
|
end
|
|
306
324
|
alias_method :to_detail, :to_inspection_s
|
|
307
325
|
|
|
308
|
-
def rails_tag
|
|
309
|
-
(fingerprint || Coaster.default_fingerprint).flatten.map do |fp|
|
|
310
|
-
if fp == true || fp == :class
|
|
311
|
-
self.class.name
|
|
312
|
-
else
|
|
313
|
-
fp.to_s
|
|
314
|
-
end
|
|
315
|
-
end.compact
|
|
316
|
-
end
|
|
317
|
-
|
|
318
326
|
def cleaned_backtrace(options = {})
|
|
319
327
|
return unless backtrace
|
|
320
328
|
cl = options[:cleaner] || cleaner
|
data/lib/coaster/version.rb
CHANGED
data/test/test_backtrace.rb
CHANGED
|
@@ -190,7 +190,7 @@ module Coaster
|
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
def test_backtrace_to_keep
|
|
193
|
-
e = ArgumentError.new(m: 'blahasdf', desc: 'qwer')
|
|
193
|
+
e = ArgumentError.new(m: 'blahasdf', desc: 'qwer', fingerprint: 'aaabbb')
|
|
194
194
|
new_e = StandardError.new(e)
|
|
195
195
|
assert_equal new_e.message, e.message
|
|
196
196
|
assert_equal new_e.description, e.description
|
|
@@ -198,6 +198,28 @@ module Coaster
|
|
|
198
198
|
assert_nil e.backtrace
|
|
199
199
|
end
|
|
200
200
|
|
|
201
|
+
def test_fingerprint
|
|
202
|
+
e = ArgumentError.new(m: 'blahasdf', desc: 'qwer', fingerprint: 'aaabbb')
|
|
203
|
+
new_e = StandardError.new(e)
|
|
204
|
+
assert_equal ['aaabbb', e.digest_message], e.fingerprint
|
|
205
|
+
assert_equal ['aaabbb', e.digest_message, new_e.digest_message], new_e.fingerprint
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def test_fingerprint_proc
|
|
209
|
+
e = ArgumentError.new(m: 'blahasdf', desc: 'qwer', fingerprint: proc{|e| e.status})
|
|
210
|
+
new_e = StandardError.new(e)
|
|
211
|
+
assert_equal [999999, e.digest_message], e.fingerprint
|
|
212
|
+
assert_equal [999999, e.digest_message, new_e.digest_message], new_e.fingerprint
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def test_fingerprint_exception
|
|
216
|
+
e = ArgumentError.new(m: 'blahasdf', desc: 'qwer', fingerprint: proc{ raise 'aaaxxx' })
|
|
217
|
+
new_e = StandardError.new(e)
|
|
218
|
+
assert_equal ["coaster/test/test_backtrace.rb:216", e.digest_message], e.fingerprint
|
|
219
|
+
assert_equal ["coaster/test/test_backtrace.rb:216", e.digest_message, new_e.digest_message], new_e.fingerprint
|
|
220
|
+
assert_equal('aaaxxx', e.instance_variable_get(:@fingerprint_exception)[:msg])
|
|
221
|
+
end
|
|
222
|
+
|
|
201
223
|
def test_backtrace_to_keep_as_cause
|
|
202
224
|
raise ArgumentError, m: 'blahasdf', desc: 'qwer'
|
|
203
225
|
rescue => e
|
data/test/test_standard_error.rb
CHANGED
|
@@ -206,7 +206,7 @@ module Coaster
|
|
|
206
206
|
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", ih['cause']['message']
|
|
207
207
|
assert ih['cause']['instance_variables']['@coaster']
|
|
208
208
|
assert_instance_of Array, ih['cause']['backtrace']
|
|
209
|
-
assert_equal [e.digest_message, e.digest_backtrace], e.sentry_fingerprint
|
|
209
|
+
assert_equal [e.cause.digest_message, e.cause.digest_backtrace, e.digest_message, e.digest_backtrace], e.sentry_fingerprint
|
|
210
210
|
|
|
211
211
|
detail = e.to_inspection_s
|
|
212
212
|
detail_front = <<-LOG
|
|
@@ -216,7 +216,7 @@ module Coaster
|
|
|
216
216
|
@coaster: true
|
|
217
217
|
@digest_backtrace: #{e.digest_backtrace}
|
|
218
218
|
@digest_message: a8c7c1
|
|
219
|
-
@fingerprint:
|
|
219
|
+
@fingerprint: #{e.fingerprint.inspect}
|
|
220
220
|
@ins_var: [\"Coaster::TestStandardError::SampleError\", {\"h\" => 1}]
|
|
221
221
|
@ins_varr: {\"dd\" => true}
|
|
222
222
|
@level: \"error\"
|
|
@@ -233,7 +233,7 @@ CAUSE: [Coaster::TestStandardError::SampleError] status:10
|
|
|
233
233
|
@coaster: true
|
|
234
234
|
@digest_backtrace: #{e.cause.digest_backtrace}
|
|
235
235
|
@digest_message: cbe233
|
|
236
|
-
@fingerprint:
|
|
236
|
+
@fingerprint: #{e.cause.fingerprint.inspect}
|
|
237
237
|
@level: "error"
|
|
238
238
|
@raven: {}
|
|
239
239
|
@tags: {}
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: coaster
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.34
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- buzz jung
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2025-10
|
|
10
|
+
date: 2025-11-10 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: oj
|
|
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
257
257
|
- !ruby/object:Gem::Version
|
|
258
258
|
version: '0'
|
|
259
259
|
requirements: []
|
|
260
|
-
rubygems_version: 3.6.
|
|
260
|
+
rubygems_version: 3.6.9
|
|
261
261
|
specification_version: 4
|
|
262
262
|
summary: A little convenient feature for standard library
|
|
263
263
|
test_files:
|