Sha256: 010729a45023a28a70af701b9202d903bf147214f36043c3778c0d58f18ea6fb

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

module ErrorHandler
	class Parser 

		#Init
		def initialize(exception, request, controller)
			@exception, @request, @controller = exception, request, controller
		end

		#Save
		def save
			ActiveRecord::Base.logger.silence do
				Error.create(relevant_info)
			end
 			log(relevant_info)
		end

		#Info
		def relevant_info(info = {})
			info[:class_name] 	= @exception.class.to_s
			info[:message] 		= @exception.to_s
			info[:trace] 		= @exception.backtrace.join("\n")
			info[:target_url] 	= @request.url
			info[:referer_url] 	= @request.referer
			info[:params] 		= @request.params.inspect
			info[:user_agent] 	= @request.user_agent
			if user
				info[:usable_type] 	= user[:type]
				info[:usable_id] 	= user[:id]
			end
			return info
		end

		#User
		def user(data = {})
			# => refer to Joe's if want to find admin / user
			if(@controller.respond_to?("current_user"))
				user = @controller.send("current_user")
				[:id].each do |field|
					data[:id] = user.send(field) 	if user.respond_to?(field)
					data[:type] = "user" 			if @controller.respond_to?("current_user")
				end
			end
			return data
		end

		#Log
		def log(info)
			message = "#{info[:class_name]} (#{info[:message]}):\n "
			message += Rails.backtrace_cleaner.clean(info[:trace].split("\n")).join("\n")
			Rails.logger.fatal(message)
		end

	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
exception_handler-0.0.25 lib/exception_handler/parser.rb
exception_handler-0.0.22 lib/exception_handler/parser.rb
exception_handler-0.0.21 lib/exception_handler/parser.rb