You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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]>
0 commit comments