Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
do not lose backtrace information from the raised exception
  • Loading branch information
tenderlove committed Oct 25, 2012
1 parent 6033e8a commit facd3e8
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
16 changes: 6 additions & 10 deletions actionpack/lib/action_dispatch/http/request.rb
Expand Up @@ -251,21 +251,17 @@ def session_options=(options)

# Override Rack's GET method to support indifferent access
def GET
begin
@env["action_dispatch.request.query_parameters"] ||= (normalize_parameters(super) || {})
rescue TypeError => e
raise ActionController::BadRequest, "Invalid query parameters: #{e.message}"
end
@env["action_dispatch.request.query_parameters"] ||= (normalize_parameters(super) || {})
rescue TypeError => e
raise ActionController::BadRequest, "Invalid query parameters: #{e.message}", e.backtrace
end
alias :query_parameters :GET

# Override Rack's POST method to support indifferent access
def POST
begin
@env["action_dispatch.request.request_parameters"] ||= (normalize_parameters(super) || {})
rescue TypeError => e
raise ActionController::BadRequest, "Invalid request parameters: #{e.message}"
end
@env["action_dispatch.request.request_parameters"] ||= (normalize_parameters(super) || {})
rescue TypeError => e
raise ActionController::BadRequest, "Invalid request parameters: #{e.message}", e.backtrace
end
alias :request_parameters :POST

Expand Down
9 changes: 5 additions & 4 deletions actionpack/test/dispatch/request_test.rb
Expand Up @@ -550,12 +550,13 @@ def url_for(options = {})
test "parameters still accessible after rack parse error" do
mock_rack_env = { "QUERY_STRING" => "x[y]=1&x[y][][w]=2", "rack.input" => "foo" }
request = nil
begin
request = stub_request(mock_rack_env)
request.parameters
rescue ActionController::BadRequest
request = stub_request(mock_rack_env)

assert_raises(ActionController::BadRequest) do
# rack will raise a TypeError when parsing this query string
request.parameters
end

assert_equal({}, request.parameters)
end

Expand Down

0 comments on commit facd3e8

Please sign in to comment.