• Yorick Peterse's avatar
    Support for rendering/redacting multiple documents · d470f3d1
    Yorick Peterse authored
    This commit changes the way certain documents are rendered (currently
    only Notes) and how documents are redacted. Previously both rendering
    and redacting would run on a per document basis. The result of this was
    that for every document we'd have to run countless queries just to
    figure out if we could display a set of links or not.
    
    This commit changes things around so that redacting Markdown documents
    is no longer tied into the html-pipeline Gem. This in turn allows it to
    redact multiple documents in a single pass, thus reducing the number of
    queries needed.
    
    In turn rendering issue/merge request notes has been adjusted to take
    advantage of this new setup. Instead of rendering Markdown somewhere
    deep down in a view the Markdown is rendered and redacted in the
    controller (taking the current user and all that into account). This has
    been done in such a way that the "markdown()" helper method can still be
    used on its own.
    
    This particular commit also paves the way for caching rendered HTML on
    object level. Right now there's an accessor method Note#note_html which
    is used for setting/getting the rendered HTML. Once we cache HTML on row
    level we can simply change this field to be a column and call a "save"
    whenever needed and we're pretty much done.
    d470f3d1
merge_requests_controller.rb 11.8 KB