class RailsExceptionHandler::Parser
Attributes
external_info[RW]
internal_info[RW]
Public Class Methods
new(env, request, exception, controller)
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 4 def initialize(env, request, exception, controller) @env = env @request = request @exception = exception @exception = exception.exception if @exception.class.to_s == "ActionDispatch::ExceptionWrapper" @controller = controller @external_info = {} @internal_info = {} parse end
Public Instance Methods
anon_user?()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 49 def anon_user? [nil,'Anonymous'].include?(user_info) end
ignore?()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 29 def ignore? filters = RailsExceptionHandler.configuration.filters filters.each do |filter| if(filter.class == Symbol) result = send("filter_#{filter}") elsif(filter.class == Hash) result = send("filter_#{filter.keys[0]}", filter.values[0]) else raise "RailsExceptionHandler: Unknown filter #{filter.inspect}" end return true if(result) end return false end
parse()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 15 def parse @internal_info[:error_class] = @exception.class.to_s @internal_info[:target_url] = @request.url @internal_info[:referer_url] = @request.referer @internal_info[:user_agent] = @request.user_agent config = RailsExceptionHandler.configuration config.request_info_block.call(@external_info, @request) if(config.request_info_block) config.exception_info_block.call(@external_info, @exception) if(config.exception_info_block) config.env_info_block.call(@external_info, @env) if(config.env_info_block) config.global_info_block.call(@external_info) if(config.global_info_block) @external_info[:user_info] = user_info if(user_info) end
routing_error?()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 44 def routing_error? routing_errors = ['ActionController::RoutingError', 'AbstractController::ActionNotFound', 'ActiveRecord::RecordNotFound'] routing_errors.include?(@exception.class.to_s) end
Private Instance Methods
blank_referer?()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 55 def blank_referer? @internal_info[:referer_url] == "/" || @internal_info[:referer_url].blank? end
filter_all_404s()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 66 def filter_all_404s routing_error? end
filter_anon_404s()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 74 def filter_anon_404s routing_error? && anon_user? end
filter_no_referer_404s()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 70 def filter_no_referer_404s routing_error? && blank_referer? end
filter_referer_url_regxp(regxp)
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 88 def filter_referer_url_regxp(regxp) result = (@internal_info[:referer_url] || "").match(regxp) result != nil end
filter_target_url_regxp(regxp)
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 83 def filter_target_url_regxp(regxp) result = (@internal_info[:target_url] || "").match(regxp) result != nil end
filter_user_agent_regxp(regxp)
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 78 def filter_user_agent_regxp(regxp) result = (@internal_info[:user_agent] || "").match(regxp) result != nil end
user_info()
click to toggle source
# File lib/rails_exception_handler/parser.rb, line 59 def user_info config = RailsExceptionHandler.configuration.store_user_info return nil unless(config) user_object = @controller.send(config[:method]) user_object ? user_object.send(config[:field]) : 'Anonymous' end