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