Fix two lockfile controller 500s - #239
Merged
Merged
Conversation
A request for /lockfiles/:id.json reached the web controller, which rendered :show_new unconditionally and raised ActionView::MissingTemplate (500), since only show_new.html.erb exists. The JSON representation is served by API::LockfilesController on the api subdomain, so the web action now responds to HTML only. Other formats raise ActionController::UnknownFormat, which Rails maps to 406 and sentry-rails excludes from reporting by default.
API::LockfilesController#create called fetch on the result of params.require(:lockfile), which returns a String when a request sends lockfile as a bare scalar instead of the nested lockfile[content] hash, raising NoMethodError (500). It now accepts both shapes and lets Lockfile::Inspection answer with 422 invalid_content. The web controller had the same crash through String#permit, reachable by a hand-crafted POST though not by the form. It now uses params.expect, which raises ParameterMissing (400) for unexpected shapes. ParameterMissing is in sentry-rails' default ignore list, so these requests stop paging us.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes two production 500s, one commit each.
undefined method 'fetch' for an instance of String (NoMethodError)params.require(:lockfile)returns a String when a request sendslockfileas a bare scalar instead oflockfile[content]. The API now accepts both shapes and answers 422invalid_content; the web controller usesparams.expect, which raisesParameterMissing(400).Missing template lockfiles/show_new … formats: [:json] (ActionView::MissingTemplate)LockfilesController#showrendered:show_newfor any format. JSON is served byAPI::LockfilesControlleron the api subdomain, so the web action responds to HTML only (406 otherwise).