• E
    Load initial database.yml once, and warn if we can't create tasks · df6b0de7
    eileencodes 提交于
    For multiple databases we attempt to generate the tasks by reading the
    database.yml before the Rails application is booted. This means that we
    need to strip out ERB since it could be reading Rails configs.
    
    In some cases like https://github.com/rails/rails/issues/36540 the ERB
    is too complex and we can't overwrite with the DummyCompilier we used in
    https://github.com/rails/rails/pull/35497. For the complex causes we
    simply issue a warning that says we couldn't infer the database tasks
    from the database.yml.
    
    While working on this I decided to update the code to only load the
    database.yml once initially so that we avoid having to issue the same
    warning multiple times. Note that this had no performance impact in my
    testing and is merely for not having to save the error off somewhere.
    Also this feels cleaner.
    
    Note that this will not break running tasks that exist, it will just
    mean that tasks for multi-db like `db:create:other_db` will not be
    generated. If the database.yml is actually unreadable it will blow up
    during normal rake task calls.
    
    Fixes #36540
    df6b0de7
database_tasks.rb 16.6 KB