• C
    Move the null mime type to request.format · 618d5317
    Carlos Antonio da Silva 提交于
    TLDR: always return an object that responds to the query methods from
    request.format, and do not touch Mime::Type[] lookup to avoid bugs.
    
    ---
    
    Long version:
    
    The initial issue was about being able to do checks like
    request.format.html? for request with an unknown format, where
    request.format would be nil.
    
    This is where the issue came from at first in #7837 and #8085
    (merged in cba05887), but the
    implementation went down the path of adding this to the mime type
    lookup logic.
    
    This unfortunately introduced subtle bugs, for instance in the merged
    commit a test related to send_file had to be changed to accomodate the
    introduction of the NullType.
    
    Later another bug was found in #13064, related to the content-type being
    shown as #<Mime::NullType:...> for templates with localized extensions
    but no format included. This one was fixed in #13133, merged in
    43962d6e.
    
    Besides that, custom handlers were not receiving the proper template
    formats anymore when passing through the rendering process, because of
    the NullType addition. That was found while migrating an application
    from 3.2 to 4.0 that uses the Markerb gem (a custom handler that
    generates both text and html emails from a markdown template).
    
    ---
    
    This changes the implementation moving away from returning this null
    object from the mime lookup, and still fixes the initial issue where
    request.format.zomg? would raise an exception for unknown formats due to
    request.format being nil.
    618d5317
rendering.rb 2.0 KB