Sha256: 0f38e3357bca50ff8f2d2312a9318c435198a38219a27cebc2f97f9fadd6b585

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

######################################################

require "action_dispatch"
require "exception_handler/version"
require "exception_handler/parser"

######################################################

module ExceptionHandler

	#Hook
	class Engine < ::Rails::Engine
		config.middleware.use 'ExceptionHandler::Message' 								#DB / Email
		config.exceptions_app = ->(env) { ExceptionController.action(:show).call(env) } #Error Pages
	end

	#DB / Email
	class Message

		# Init
		def initialize(app)
			@app = app
		end

		#Error
		def call(env)
			@app.call(env)

		rescue Exception => exception
			request = ActionDispatch::Request.new(env)
			controller = env['action_controller.instance']

			ErrorHandler::Parser.new(exception, request, controller).save unless self.ignore?(exception, request)
			raise exception
		end

		#Ignore
		def ignore?(exception, request, ignored = {})
			ignored[:errors] = [ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound]
			ignored[:bots]   = /\b(Baidu|Gigabot|Googlebot|libwww-per|lwp-trivial|msnbot|SiteUptime|Slurp|Wordpress|ZIBB|ZyBorg|Yandex|Jyxobot|Huaweisymantecspider|ApptusBot)\b/i

			return true if ignored[:errors].include?(exception.class) && request.referer.blank?
			return true if request.user_agent =~ ignored[:bots]
		end

	end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exception_handler-0.0.25 lib/exception_handler.rb