1. 20 12月, 2019 1 次提交
    • E
      Don't require "action_view/base" in action pack: · 88ee52f9
      Edouard CHIN 提交于
      - ### Problem
      
        ActionPack requires "action_view/base" at boot time, this
        causes a variety of issue that I described in detail in #38024.
      
        There is no real reason to require av/base in the
        ActionDispatch::Debugexceptions class.
      
        ### Solution
      
        Like any other components (such as ActiveRecord, ActiveJob...),
        ActionView::Base shouldn't be loaded at boot time.
      
        Here are the two main changes needed for this:
      
        1) Actionview has a special initializer that needs to run
           before the app is fully booted (adding a executor needs to be done
           before application is done booting)
        https://github.com/rails/rails/blob/63ec70e700e321b22e9baf2ad2d45cd3f4febc79/actionview/lib/action_view/railtie.rb#L81-L84
      
           That initializer used a lazy load hooks but we can't do that anymore
           because Action::Base view won't be triggered during booting process.
           When it will get triggered, (presumably on the first request),
           it's too late to add an executor.
      
        ------------------------------------------------
      
        2) Compare to other components, ActionView doesn't use `Base` for
           configuration flag. A lot of flags ares instead set on modules
           (FormHelper, FormTagHelper).
           The problem is that those module depends on AV::Base to be
           loaded, as otherwise configuration set by the user aren't applied.
           (Since the lazy load hooks hasn't been triggered)
           https://github.com/rails/rails/blob/63ec70e700e321b22e9baf2ad2d45cd3f4febc79/actionview/lib/action_view/railtie.rb#L66-L69
      
           We shouldn't wait for AB::Base to be loaded in order to set these
           configuration. However, we need to do it inside an
           `after_initialize` block in order to let application
           set it to the value they want.
      
        Closes #28538
      
        Co-authored-by: betesh <iybetesh@gmail.com>"
      88ee52f9
  2. 18 12月, 2019 39 次提交