提交 561edbe7 编写于 作者: S Steve Klabnik

Failsafe exception returns text/plain.

It's best to just return text/plain when something has gone terribly
wrong.

Fixes #5660.
上级 cfc0ca05
## Rails 4.0.0 (unreleased) ##
* Failsafe exception returns text/plain. *Steve Klabnik*
* Remove actionpack's rack-cache dependency and declare the
dependency in the Gemfile.
......
......@@ -15,11 +15,11 @@ module ActionDispatch
# If any exception happens inside the exceptions app, this middleware
# catches the exceptions and returns a FAILSAFE_RESPONSE.
class ShowExceptions
FAILSAFE_RESPONSE = [500, {'Content-Type' => 'text/html'},
["<html><body><h1>500 Internal Server Error</h1>" <<
FAILSAFE_RESPONSE = [500, { 'Content-Type' => 'text/plain' },
["500 Internal Server Error\n" <<
"If you are the administrator of this website, then please read this web " <<
"application's log file and/or the web server's log file to find out what " <<
"went wrong.</body></html>"]]
"went wrong."]]
def initialize(app, exceptions_app)
@app = app
......
......@@ -93,4 +93,20 @@ def test_render_fallback_exception
assert_equal 'text/html', response.content_type.to_s
end
end
class ShowFailsafeExceptionsTest < ActionDispatch::IntegrationTest
def test_render_failsafe_exception
@app = ShowExceptionsOverridenController.action(:boom)
@exceptions_app = @app.instance_variable_get(:@exceptions_app)
@app.instance_variable_set(:@exceptions_app, nil)
$stderr = StringIO.new
get '/', {}, 'HTTP_ACCEPT' => 'text/json'
assert_response :internal_server_error
assert_equal 'text/plain', response.content_type.to_s
@app.instance_variable_set(:@exceptions_app, @exceptions_app)
$stderr = STDERR
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册