coaster 1.4.30 → 1.4.32

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: d39beeaee29be2896e13ec86ba9e0a9c581a424d8886757e3478fe7283350276
4
- data.tar.gz: dec06f3400a4e5be9f95987fddca45d04ed41cdc991070455361bb2463d91cb0
3
+ metadata.gz: c4729b9b764d1dec252c0c332a5246f92766c4db32561978be60d53fc896d5b0
4
+ data.tar.gz: aeb6dbb4a55d9f7d5c7e5d5fc40df951d884da76d91ce63fda4d31626797dd00
5
5
  SHA512:
6
- metadata.gz: 384a1e5564c587f06901aecceb71de37b70fb51353f205067b966cd525dfda3b16c81a7bbd3830740da68c448a3b0c756f117e372d0343bc8f871e5b8192c204
7
- data.tar.gz: ac1b741ff50422d42335e96ba32e6c2362571452c5c425d27b27bb72822c9f99932540eacb37f19e908b51c3f160cf3fe9d8b2300ad3deb651a6b8c100cdb881
6
+ metadata.gz: e4ab283e7934e1ddfbfa3e746727fcabb99f631c210025d1337481fdddc7bf882188f62d7e52c5f924dbf12cb394dc336348aa0fdea82185f975ad4a01abe720
7
+ data.tar.gz: b625d0a668313c3226fbc5667b2df2fbff9ec8e7ac752b4b152dba7808e2cd08b051ef60b9a75f4baba4a025c1733fd4578134b90c8a380493cdc447aaae4659
@@ -12,17 +12,8 @@ class StandardError
12
12
  @raven ||= {}.with_indifferent_access
13
13
  end
14
14
 
15
- def raven_fingerprint
16
- (fingerprint || Coaster.default_fingerprint).flatten.map do |fp|
17
- if fp == true || fp == :class
18
- self.class.name
19
- elsif fp == :default
20
- '{{ default }}'
21
- else
22
- fp
23
- end
24
- end.flatten
25
- end
15
+ alias_method :sentry_fingerprint, :fingerprint
16
+ alias_method :raven_fingerprint, :fingerprint
26
17
 
27
18
  def notes(options = {})
28
19
  opts = options ? options.dup : {}
@@ -36,6 +27,7 @@ class StandardError
36
27
  nt[:tags][:digest_backtrace] = digest_backtrace if digest_backtrace.present?
37
28
  nt[:level] ||= self.level
38
29
  nt[:extra] = attributes.merge(nt[:extra])
30
+ nt[:fingerprint] = sentry_fingerprint
39
31
  nt
40
32
  end
41
33
 
@@ -47,12 +39,11 @@ class StandardError
47
39
  scope.user.merge!(nt[:user] || {})
48
40
  scope.tags.merge!(nt[:tags])
49
41
  scope.extra.merge!(nt[:extra])
50
- scope.set_fingerprint(raven_fingerprint)
42
+ scope.set_fingerprint(nt[:fingerprint])
51
43
  end
52
44
  rescue => e
53
- msg = "#{e.class.name}: #{e.message}"
54
- msg += "\n\t" + e.backtrace.join("\n\t")
55
- Sentry.logger.error(msg)
45
+ Sentry.capture_exception(e)
46
+ @sentry_event = Sentry.capture_exception(self)
56
47
  end
57
48
 
58
49
  def sentry_event_id
@@ -122,13 +122,19 @@ class StandardError
122
122
  super(msg)
123
123
  @digest_message = self.class.digest_message(msg)
124
124
  set_backtrace(message.backtrace) if message.is_a?(Exception)
125
- @fingerprint << @digest_message
126
125
  @fingerprint.compact!
127
126
  self
128
127
  end
129
128
 
130
- # @return [Array, NilClass] fingerprint
131
- def fingerprint; @fingerprint.is_a?(Array) && @fingerprint + [digest_backtrace] end
129
+ # @return [Array] fingerprint
130
+ def fingerprint
131
+ (@fingerprint + Coaster.default_fingerprint).flatten.compact.map do |fp|
132
+ case fp
133
+ when *%i[digest_message digest_backtrace] then send(fp)
134
+ else fp.to_s
135
+ end
136
+ end.flatten.compact
137
+ end
132
138
  def safe_message; message || '' end
133
139
  def digest_message; @digest_message ||= self.class.digest_message(message) end
134
140
  def digest_backtrace; @digest_backtrace ||= backtrace ? Digest::MD5.hexdigest(cleaned_backtrace.join("\n"))[0...8] : nil end
@@ -303,10 +309,8 @@ class StandardError
303
309
  (fingerprint || Coaster.default_fingerprint).flatten.map do |fp|
304
310
  if fp == true || fp == :class
305
311
  self.class.name
306
- elsif fp == :default || fp == '{{ default }}'
307
- nil
308
312
  else
309
- fp
313
+ fp.to_s
310
314
  end
311
315
  end.compact
312
316
  end
@@ -1,3 +1,3 @@
1
1
  module Coaster
2
- VERSION = '1.4.30'
2
+ VERSION = '1.4.32'
3
3
  end
data/lib/coaster.rb CHANGED
@@ -4,6 +4,7 @@ if spec.version >= Gem::Version.new('7.1')
4
4
  require 'active_support/deprecation'
5
5
  require 'active_support/deprecator'
6
6
  end
7
+ require 'active_support/core_ext/object'
7
8
  require 'active_support/core_ext/hash/indifferent_access'
8
9
  require 'active_support/core_ext/module/attribute_accessors'
9
10
  require 'active_support/core_ext/class/attribute_accessors'
@@ -14,7 +15,7 @@ module Coaster
14
15
  mattr_writer :logger
15
16
  mattr_writer :default_fingerprint
16
17
 
17
- DEFAULT_FINGERPRINT = [:default, :class].freeze
18
+ DEFAULT_FINGERPRINT = [].freeze
18
19
 
19
20
  class << self
20
21
  def configure
data/test/test_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  ENV['DEBUG'] = 'true'
2
2
 
3
+ require 'debug'
3
4
  require 'minitest'
4
5
  require 'pry'
5
- require 'pry-byebug'
6
6
  require 'pry-stack_explorer'
7
7
 
8
8
  require 'rubygems'
@@ -23,3 +23,4 @@ end
23
23
 
24
24
  Coaster.logger = Logger.new(STDOUT)
25
25
  Coaster.logger.level = Logger::WARN
26
+ Coaster.default_fingerprint = %i[digest_message digest_backtrace]
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
  require 'minitest/autorun'
3
- require 'coaster/core_ext/standard_error/raven'
3
+ require 'coaster/core_ext/standard_error/sentry'
4
4
 
5
5
  StandardError.inspection_value_proc = Proc.new do |val|
6
6
  PP.pp(val, ''.dup, 79)[0...-1]
@@ -206,6 +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
210
 
210
211
  detail = e.to_inspection_s
211
212
  detail_front = <<-LOG
@@ -215,7 +216,7 @@ module Coaster
215
216
  @coaster: true
216
217
  @digest_backtrace: #{e.digest_backtrace}
217
218
  @digest_message: a8c7c1
218
- @fingerprint: ["a8c7c1"]
219
+ @fingerprint: []
219
220
  @ins_var: [\"Coaster::TestStandardError::SampleError\", {\"h\" => 1}]
220
221
  @ins_varr: {\"dd\" => true}
221
222
  @level: \"error\"
@@ -232,7 +233,7 @@ CAUSE: [Coaster::TestStandardError::SampleError] status:10
232
233
  @coaster: true
233
234
  @digest_backtrace: #{e.cause.digest_backtrace}
234
235
  @digest_message: cbe233
235
- @fingerprint: ["cbe233"]
236
+ @fingerprint: []
236
237
  @level: "error"
237
238
  @raven: {}
238
239
  @tags: {}
@@ -240,10 +241,10 @@ CAUSE: [Coaster::TestStandardError::SampleError] status:10
240
241
  BACKTRACE:
241
242
  #{__FILE__}:188:in 'Coaster::TestStandardError#test_to_detail'
242
243
  LOG
243
- assert detail.start_with?(detail_front)
244
+ assert_match(/^#{Regexp.escape(detail_front)}/, detail)
244
245
  cause_ix = (detail =~ /CAUSE/)
245
246
  cause = detail[cause_ix..-1]
246
- assert cause.start_with?(detail_cause_front)
247
+ assert_match(/^#{Regexp.escape(detail_cause_front)}/, cause)
247
248
  end
248
249
 
249
250
  def test_to_detail_with_depth
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.30
4
+ version: 1.4.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - buzz jung
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-06-19 00:00:00.000000000 Z
10
+ date: 2025-10-16 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: oj
@@ -244,7 +243,6 @@ licenses:
244
243
  metadata:
245
244
  source_code_uri: https://github.com/frograms/coaster
246
245
  bug_tracker_uri: https://github.com/frograms/coaster/issues
247
- post_install_message:
248
246
  rdoc_options: []
249
247
  require_paths:
250
248
  - lib
@@ -259,8 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
257
  - !ruby/object:Gem::Version
260
258
  version: '0'
261
259
  requirements: []
262
- rubygems_version: 3.5.22
263
- signing_key:
260
+ rubygems_version: 3.6.9
264
261
  specification_version: 4
265
262
  summary: A little convenient feature for standard library
266
263
  test_files: