From 5f71dcd73925a5036f9954a1225926b7326a3e30 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Thu, 7 Mar 2013 09:23:45 +1300 Subject: [PATCH] Made error fingerprints a bit smarter for JS errors - Use first backtrace file and line number, and fall back to error message. --- app/models/error_report.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/models/error_report.rb b/app/models/error_report.rb index 6870944..f2773d0 100644 --- a/app/models/error_report.rb +++ b/app/models/error_report.rb @@ -58,10 +58,17 @@ class ErrorReport private def fingerprint_source - # If backtrace is blank, use notice message for fingerprint - backtrace_or_message = backtrace.lines.any? ? backtrace.id : message + # Find the first backtrace line with a file and line number. + if line = backtrace.lines.detect {|l| l.number.present? && l.file.present? } + # If line exists, only use file and number. + file_or_message = "#{line.file}:#{line.number}" + else + # If no backtrace, use error message + file_or_message = message + end + { - :backtrace_or_message => backtrace_or_message, + :file_or_message => file_or_message, :error_class => error_class, :component => component, :action => action, -- libgit2 0.21.2