class RavenProcessors::Fingerprint
Builds fingerprint based on exception class & the line of exception
Public Instance Methods
process(data)
click to toggle source
# File lib/raven_processors/fingerprint.rb, line 8 def process(data) fingerprint = data[:fingerprint] || data['fingerprint'] exception = (data.dig('exception', 'values') || data.dig(:exception, :values))&.first return data if fingerprint || exception.nil? || exception.empty? data.merge(fingerprint: build_fingerprint(exception)) end
Private Instance Methods
build_fingerprint(exception)
click to toggle source
# File lib/raven_processors/fingerprint.rb, line 19 def build_fingerprint(exception) [ exception.fetch(:type), frame_to_line(exception.dig(:stacktrace, :frames)&.last) ].compact end
frame_to_line(frame)
click to toggle source
# File lib/raven_processors/fingerprint.rb, line 26 def frame_to_line(frame) return if frame.nil? || frame.empty? parts = [frame[:abs_path]] parts << ":#{frame[:lineno]}" unless frame[:lineno].nil? && frame[:lineno].empty? parts << ":in `#{frame[:function]}'" unless frame[:function].nil? && frame[:function].empty? parts.join end