aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
diff options
context:
space:
mode:
authorGrey Baker <greysteil@gmail.com>2014-07-13 17:58:20 +0100
committerGrey Baker <greysteil@gmail.com>2014-07-14 11:55:44 +0100
commitf49d20ef36c2d339e7a988fdc52981cdb95af22f (patch)
tree821229483a98c8104aef5292cc89e18563d83873 /actionpack/lib/action_dispatch/middleware/show_exceptions.rb
parentccac6082bd4265f4827cc8bf9748c983d0a1c6c6 (diff)
downloadrails-f49d20ef36c2d339e7a988fdc52981cdb95af22f.tar.gz
rails-f49d20ef36c2d339e7a988fdc52981cdb95af22f.tar.bz2
rails-f49d20ef36c2d339e7a988fdc52981cdb95af22f.zip
Stash original path in `ShowExceptions` middleware
`ActionDispatch::ShowExceptions` overwrites `PATH_INFO` with the status code for the exception defined in `ExceptionWrapper`, so the path the user was visiting when an exception occurred was not previously available to any custom exceptions_app. The original `PATH_INFO` is now stashed in `env["action_dispatch.original_path"]`.
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware/show_exceptions.rb')
-rw-r--r--actionpack/lib/action_dispatch/middleware/show_exceptions.rb1
1 files changed, 1 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
index 1d4f0f89a6..f0779279c1 100644
--- a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
+++ b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
@@ -42,6 +42,7 @@ module ActionDispatch
wrapper = ExceptionWrapper.new(env, exception)
status = wrapper.status_code
env["action_dispatch.exception"] = wrapper.exception
+ env["action_dispatch.original_path"] = env["PATH_INFO"]
env["PATH_INFO"] = "/#{status}"
response = @exceptions_app.call(env)
response[1]['X-Cascade'] == 'pass' ? pass_response(status) : response