• E
    Load YAML for rake tasks without parsing ERB · 37d1429a
    eileencodes 提交于
    This change adds a new method that loads the YAML for the database
    config without parsing the ERB. This may seem odd but bear with me:
    
    When we added the ability to have rake tasks for multiple databases we
    started looping through the configurations to collect the namespaces so
    we could do `rake db:create:my_second_db`. See #32274.
    
    This caused a problem where if you had `Rails.config.max_threads` set in
    your database.yml it will blow up because the environment that defines
    `max_threads` isn't loaded during `rake -T`. See #35468.
    
    We tried to fix this by adding the ability to just load the YAML and
    ignore ERB all together but that caused a bug in GitHub's YAML loading
    where if you used multi-line ERB the YAML was invalid. That led us to
    reverting some changes in #33748.
    
    After trying to resolve this a bunch of ways `@tenderlove` came up with
    replacing the ERB values so that we don't need to load the environment
    but we also can load the YAML.
    
    This change adds a DummyCompiler for ERB that will replace all the
    values so we can load the database yaml and create the rake tasks.
    Nothing else uses this method so it's "safe".
    
    DO NOT use this method in your application.
    
    Fixes #35468
    37d1429a
database_tasks.rb 14.9 KB