app/models/errdo/error.rb in errdo-0.12.7 vs app/models/errdo/error.rb in errdo-0.12.8
- old
+ new
@@ -1,5 +1,7 @@
+include Errdo::HistogramHelper
+
module Errdo
class Error < ActiveRecord::Base
paginates_per 20
@@ -27,11 +29,11 @@
end
# I need a more elegant way to do this
def self.create_unique_string_from_params(params)
Digest::SHA1.hexdigest(
- params[:backtrace].reject { |l| l[%r{\/ruby-[0-9]\.[0-9]\.[0-9]\/|_test.rb}] }.join("") +
+ params[:backtrace].reject { |l| l[%r{\/ruby-[0-9]*\.[0-9]*\.[0-9]*\/|_test.rb}] }.join("") +
params[:exception_message].to_s.gsub(/:0x[0-f]{14}/, "") +
params[:exception_class_name].to_s
).to_s
end
@@ -44,14 +46,38 @@
params[:backtrace][0] = params[:backtrace][0].gsub(/[_]{1,}[0-9]+/, "")
end
return params
end
+ def affected_users
+ error_occurrences.group("experiencer_id, experiencer_type").map(&:experiencer).compact
+ end
+
+ def oldest_occurrence
+ error_occurrences.order(created_at: :asc).limit(1).first
+ end
+
+ def newest_occurrence
+ error_occurrences.order(created_at: :desc).limit(1).first
+ end
+
+ def grouped_error_occurrences(timeframe = nil)
+ errors = error_occurrences.where("created_at > ?", 2.weeks.ago)
+ timeframe = useful_time(Time.now - errors.first.created_at) if timeframe.nil?
+ hist(errors, 24, Time.now - timeframe, timeframe)
+ end
+
+ def self.grouped_by_time(timeframe = nil)
+ errors = Errdo::Error.where("created_at > ?", 2.weeks.ago)
+ timeframe = useful_time(Time.now - errors.first.created_at) if timeframe.nil?
+ hist(errors, 24, Time.now - timeframe, timeframe)
+ end
+
private
def create_unique_string
self.backtrace_hash =
- Digest::SHA1.hexdigest(backtrace.to_a.reject { |l| l[%r{\/ruby-[0-9]\.[0-9]\.[0-9]\/|_test.rb}] }.join("") +
+ Digest::SHA1.hexdigest(backtrace.to_a.reject { |l| l[%r{\/ruby-[0-9]*\.[0-9]*\.[0-9]*\/|_test.rb}] }.join("") +
exception_message.to_s.gsub(/:0x[0-f]{14}/, "") +
exception_class_name.to_s).to_s
end
end