More stable error reporting
This commit is contained in:
		
							parent
							
								
									6781b41e04
								
							
						
					
					
						commit
						2ee8849153
					
				| @ -115,15 +115,22 @@ class ApplicationController < LinguaFrancaApplicationController | |||||||
| 		else | 		else | ||||||
| 			report += " in <code>#{params[:url]}:#{params[:lineNumber]}</code>" | 			report += " in <code>#{params[:url]}:#{params[:lineNumber]}</code>" | ||||||
| 		end | 		end | ||||||
| 		UserMailer.error_report( | 
 | ||||||
| 				"A JavaScript error has occurred", | 		suppress(Exception) do | ||||||
| 				report, | 			# log the error | ||||||
| 				params[:message], | 			logger.info exception.to_s | ||||||
| 				nil, | 			logger.info exception.backtrace.join("\n") | ||||||
| 				request, | 
 | ||||||
| 				params, | 			UserMailer.error_report( | ||||||
| 				current_user, | 					"A JavaScript error has occurred", | ||||||
| 			).deliver_now if Rails.env.preview? || Rails.env.production? | 					report, | ||||||
|  | 					params[:message], | ||||||
|  | 					nil, | ||||||
|  | 					request, | ||||||
|  | 					params, | ||||||
|  | 					current_user, | ||||||
|  | 				).deliver_now if Rails.env.preview? || Rails.env.production? | ||||||
|  | 		end | ||||||
| 		render json: {} | 		render json: {} | ||||||
| 	end | 	end | ||||||
| 
 | 
 | ||||||
| @ -149,26 +156,28 @@ class ApplicationController < LinguaFrancaApplicationController | |||||||
| 	end | 	end | ||||||
| 
 | 
 | ||||||
| 	rescue_from StandardError do |exception| | 	rescue_from StandardError do |exception| | ||||||
| 		# send and email if this is production | 		# log the error | ||||||
| 		UserMailer.error_report( |  | ||||||
| 				"An error has occurred in #{Rails.env}", |  | ||||||
| 				nil, |  | ||||||
| 				exception.to_s, |  | ||||||
| 				exception, |  | ||||||
| 				request, |  | ||||||
| 				params, |  | ||||||
| 				current_user, |  | ||||||
| 			).deliver_now if Rails.env.preview? || Rails.env.production? |  | ||||||
| 
 |  | ||||||
| 		# log the error		 |  | ||||||
| 		logger.info exception.to_s | 		logger.info exception.to_s | ||||||
| 		logger.info exception.backtrace.join("\n") | 		logger.info exception.backtrace.join("\n") | ||||||
| 
 | 
 | ||||||
| 		# show the error page | 		# send and email if this is production | ||||||
| 		error_500 exception | 		suppress(Exception) do | ||||||
|  | 			UserMailer.error_report( | ||||||
|  | 					"An error has occurred in #{Rails.env}", | ||||||
|  | 					nil, | ||||||
|  | 					exception.to_s, | ||||||
|  | 					exception, | ||||||
|  | 					request, | ||||||
|  | 					params, | ||||||
|  | 					current_user, | ||||||
|  | 				).deliver_now if Rails.env.preview? || Rails.env.production? | ||||||
|  | 		end | ||||||
| 
 | 
 | ||||||
| 		# raise the error if we are in development so that we can debug it | 		# raise the error if we are in development so that we can debug it | ||||||
| 		raise exception if Rails.env.development? | 		raise exception if Rails.env.development? | ||||||
|  | 
 | ||||||
|  | 		# show the error page | ||||||
|  | 		error_500 exception | ||||||
| 	end | 	end | ||||||
| 
 | 
 | ||||||
| 	def generate_confirmation(user, url, expiry = nil) | 	def generate_confirmation(user, url, expiry = nil) | ||||||
| @ -207,7 +216,7 @@ class ApplicationController < LinguaFrancaApplicationController | |||||||
| 				user.save! | 				user.save! | ||||||
| 			end | 			end | ||||||
| 
 | 
 | ||||||
| 			# genereate the confirmation, send the email and show the 403 | 			# generate the confirmation, send the email and show the 403 | ||||||
| 			referrer = request.referer.gsub(/^.*?\/\/.*?\//, '/') | 			referrer = request.referer.gsub(/^.*?\/\/.*?\//, '/') | ||||||
| 			generate_confirmation(params[:email], referrer) | 			generate_confirmation(params[:email], referrer) | ||||||
| 			template = 'login_confirmation_sent' | 			template = 'login_confirmation_sent' | ||||||
| @ -300,15 +309,17 @@ class ApplicationController < LinguaFrancaApplicationController | |||||||
| 
 | 
 | ||||||
| 	def i18n_exception(str, exception, locale, key) | 	def i18n_exception(str, exception, locale, key) | ||||||
| 		# send and email if this is production | 		# send and email if this is production | ||||||
| 		UserMailer.error_report( | 		suppress(Exception) do | ||||||
| 				"A missing translation found in #{Rails.env}", | 			UserMailer.error_report( | ||||||
| 				"<p>A translation for <code>#{key}</code> in <code>#{locale.to_s}</code> was found. The text that was rendered to the user was:</p><blockquote>#{str || 'nil'}</blockquote>", | 					"A missing translation found in #{Rails.env}", | ||||||
| 				exception.to_s, | 					"<p>A translation for <code>#{key}</code> in <code>#{locale.to_s}</code> was found. The text that was rendered to the user was:</p><blockquote>#{str || 'nil'}</blockquote>", | ||||||
| 				exception, | 					exception.to_s, | ||||||
| 				request, | 					exception, | ||||||
| 				params, | 					request, | ||||||
| 				current_user, | 					params, | ||||||
| 			).deliver_now if Rails.env.preview? || Rails.env.production? | 					current_user, | ||||||
| 		logger.info "Missing translation found for: #{key}" | 				).deliver_now if Rails.env.preview? || Rails.env.production? | ||||||
|  | 			logger.info "Missing translation found for: #{key}" | ||||||
|  | 		end | ||||||
| 	end | 	end | ||||||
| end | end | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user