Skip to content

Commit cee73b3

Browse files
skipkayhileregon
andauthored
Fix inefficient assert pattern in Rack::Lint (#2101)
Partial backport of 1970771 Differences from original commit: - `#assert` is not deprecated - `include Assertion` is not removed - The assertion in `check_status` is the 2-2-stable version since the SPEC [change][1] to require statuses to be integers was merged before this - `#dump` was added to the `REQUEST_METHOD` assertion [after][2] the original commit, so it was added here as well This fixes an issue encountered when adding `Rack::Lint` to the Rails test suite. Rails puts a lazily evaluated class inside the request env that has the potential to raise when converted to a string. Since this assertion in `Rack::Lint` calls `#inspect` on `env` whether or not `env` is a `Hash`, the lazily evaluated class would raise at that point and prevent the rest of `Rack::Lint` from validating the conformity of the request. By backporting this change, `#inspect` is now only called when the `LintError` would be raised which avoids the problem. [1]: ba25ade [2]: b426cc2 Co-authored-by: Benoit Daloze <[email protected]>
1 parent 1fdcf1f commit cee73b3

File tree

1 file changed

+177
-188
lines changed

1 file changed

+177
-188
lines changed

0 commit comments

Comments
 (0)