class ActiveTracker::Plugin::Exception
Public Class Methods
exception_capture(class_name, message, backtrace)
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 56 def self.exception_capture(class_name, message, backtrace) return if filter_exception?(class_name) tags = { class_name: class_name, backtrace_hash: Digest::SHA2.hexdigest(backtrace.first.to_s), } ActiveTracker::Model.find_or_create("Exception", tags:tags, data_type: "full") do |obj| if obj.persisted ActiveTracker::Model.delete(obj.key) end obj.data ||= {} obj.data["count"] = (obj.data["count"] || 0) + 1 # Enough for most git commits to be referenced # so should be fine for exception hashes within an application obj.id = "E" + Digest::SHA2.hexdigest(tags.inspect)[0,8] obj.expiry = 7.days obj.log_at = Time.now obj.data["backtrace"] = backtrace obj.data["message"] = message obj.data["at_requests"] ||= [] if ActiveTracker::Plugin::Request.registered? id = ActiveTracker::Plugin::Request.current_tags[:id] rescue nil obj.data["at_requests"].prepend(id) if id.present? obj.data["at_requests"] = obj.data["at_requests"][0,20] ActiveTracker::Plugin::Request.current_tags[:at_exceptions] ||= [] ActiveTracker::Plugin::Request.current_tags[:at_exceptions] << obj.id end end end
filter_exception?(class_name)
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 90 def self.filter_exception?(class_name) ActiveTracker::Plugin::Exception.filters.each do |filter| if filter.is_a?(Regexp) if filter.match(class_name) return true end elsif filter.is_a?(String) if class_name == filter return true end elsif filter.is_a?(Exception) if class_name == filter.class.name return true end end end false end
filters()
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 52 def self.filters @filters ||= [] end
filters=(value)
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 48 def self.filters=(value) @filters = value end
register()
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 4 def self.register Rails.application.middleware.insert_after ActionDispatch::ShowExceptions, ActiveTracker::ExceptionCapturer @@registered = true end
registered?()
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 10 def self.registered? @@registered rescue false end
resources_name()
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 14 def self.resources_name :exceptions end
statistics()
click to toggle source
# File lib/active_tracker/plugin/exception.rb, line 18 def self.statistics ret = [] @exceptions = ActiveTracker::Model.all("Exception") num_exceptions = @exceptions.count exceptions_last_day = @exceptions.select {|e| e.log_at >= 1.day.ago}.count exceptions_last_30_minutes = @exceptions.select {|e| e.log_at >= 30.minutes.ago}.count ret << {plugin: self, label: "Last 24 hours", value: exceptions_last_day} if exceptions_last_30_minutes == 0 ret << {plugin: self, label: "Last 30 min", value: exceptions_last_30_minutes} else ret << {plugin: self, label: "Last 30 min", value: exceptions_last_30_minutes, error: true} end ret end