Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added that Dispatcher exceptions should not be shown to the user unle…

…ss a default log has not been configured. Instead show public/500.html [DHH]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4168 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 11323ceb2833512e727fba6d7a7f61befeee4bfd 1 parent 4859b6c
@dhh dhh authored
Showing with 22 additions and 2 deletions.
  1. +2 −0  railties/CHANGELOG
  2. +20 −2 railties/lib/dispatcher.rb
View
2  railties/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Added that Dispatcher exceptions should not be shown to the user unless a default log has not been configured. Instead show public/500.html [DHH]
+
* Fixed that rake clone_structure_to_test should quit on pgsql if the dump is unsuccesful #4585 [augustz@augustz.com]
* Fixed that rails --version should have the return code of 0 (success) #4560 [blair@orcaware.com]
View
22 railties/lib/dispatcher.rb
@@ -90,8 +90,26 @@ def failsafe_response(output, status, exception = nil)
rescue Object
begin
output.write "Status: #{status}\r\n"
- output.write "Content-Type: text/plain\r\n\r\n"
- output.write(exception.to_s + "\r\n" + exception.backtrace.join("\r\n")) if exception
+
+ if exception
+ message = exception.to_s + "\r\n" + exception.backtrace.join("\r\n")
+ error_path = File.join(RAILS_ROOT, 'public', '500.html')
+
+ if defined?(RAILS_DEFAULT_LOGGER) && !RAILS_DEFAULT_LOGGER.nil?
+ RAILS_DEFAULT_LOGGER.fatal(message)
+
+ output.write "Content-Type: text/html\r\n\r\n"
+
+ if File.exists?(error_path)
+ output.write(IO.read(error_path))
+ else
+ output.write("<html><body><h1>Application error (Rails)</h1></body></html>")
+ end
+ else
+ output.write "Content-Type: text/plain\r\n\r\n"
+ output.write(message)
+ end
+ end
rescue Object
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.