Skip to content

Commit facd3e8

Browse files
committed
do not lose backtrace information from the raised exception
1 parent 6033e8a commit facd3e8

File tree

2 files changed

+11
-14
lines changed

2 files changed

+11
-14
lines changed

actionpack/lib/action_dispatch/http/request.rb

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -251,21 +251,17 @@ def session_options=(options)
251251

252252
# Override Rack's GET method to support indifferent access
253253
def GET
254-
begin
255-
@env["action_dispatch.request.query_parameters"] ||= (normalize_parameters(super) || {})
256-
rescue TypeError => e
257-
raise ActionController::BadRequest, "Invalid query parameters: #{e.message}"
258-
end
254+
@env["action_dispatch.request.query_parameters"] ||= (normalize_parameters(super) || {})
255+
rescue TypeError => e
256+
raise ActionController::BadRequest, "Invalid query parameters: #{e.message}", e.backtrace
259257
end
260258
alias :query_parameters :GET
261259

262260
# Override Rack's POST method to support indifferent access
263261
def POST
264-
begin
265-
@env["action_dispatch.request.request_parameters"] ||= (normalize_parameters(super) || {})
266-
rescue TypeError => e
267-
raise ActionController::BadRequest, "Invalid request parameters: #{e.message}"
268-
end
262+
@env["action_dispatch.request.request_parameters"] ||= (normalize_parameters(super) || {})
263+
rescue TypeError => e
264+
raise ActionController::BadRequest, "Invalid request parameters: #{e.message}", e.backtrace
269265
end
270266
alias :request_parameters :POST
271267

actionpack/test/dispatch/request_test.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -550,12 +550,13 @@ def url_for(options = {})
550550
test "parameters still accessible after rack parse error" do
551551
mock_rack_env = { "QUERY_STRING" => "x[y]=1&x[y][][w]=2", "rack.input" => "foo" }
552552
request = nil
553-
begin
554-
request = stub_request(mock_rack_env)
555-
request.parameters
556-
rescue ActionController::BadRequest
553+
request = stub_request(mock_rack_env)
554+
555+
assert_raises(ActionController::BadRequest) do
557556
# rack will raise a TypeError when parsing this query string
557+
request.parameters
558558
end
559+
559560
assert_equal({}, request.parameters)
560561
end
561562

0 commit comments

Comments
 (0)