• G
    Lock down new `ImplicitRender` behavior for 5.0 RC · 73b1efc5
    Godfrey Chan 提交于
    1. Conceptually revert #20276
    
       The feature was implemented for the `responders` gem. In the end,
       they did not need that feature, and have found a better fix (see
       plataformatec/responders#131).
    
       `ImplicitRender` is the place where Rails specifies our default
       policies for the case where the user did not explicitly tell us
       what to render, essentially describing a set of heuristics. If
       the gem (or the user) knows exactly what they want, they could
       just perform the correct `render` to avoid falling through to
       here, as `responders` did (the user called `respond_with`).
    
       Reverting the patch allows us to avoid exploding the complexity
       and defining “the fallback for a fallback” policies.
    
    2. `respond_to` and templates are considered exhaustive enumerations
    
       If the user specified a list of formats/variants in a `respond_to`
       block, anything that is not explicitly included should result
       in an `UnknownFormat` error (which is then caught upstream to
       mean “406 Not Acceptable” by default). This is already how it
       works before this commit.
    
       Same goes for templates – if the user defined a set of templates
       (usually in the file system), that set is now considered exhaustive,
       which means that “missing” templates are considered `UnknownFormat`
       errors (406).
    
    3. To keep API endpoints simple, the implicit render behavior for
       actions with no templates defined at all (regardless of formats,
       locales, variants, etc) are defaulted to “204 No Content”. This
       is a strictly narrower version of the feature landed in #19036 and
       #19377.
    
    4. To avoid confusion when interacting in the browser, these actions
       will raise an `UnknownFormat` error for “interactive” requests
       instead. (The precise definition of “interactive” requests might
       change – the spirit here is to give helpful messages and avoid
       confusions.)
    
    Closes #20666, #23062, #23077, #23564
    
    [Godfrey Chan, Jon Moss, Kasper Timm Hansen, Mike Clark, Matthew Draper]
    73b1efc5
respond_to_test.rb 22.8 KB