• E
    Default db_config should be primary or first · ee9e308f
    eileencodes 提交于
    The handling for single database applications has always set a schema.rb
    or structure.sql files for loading the database schema. When we first
    implemented multiple database support we intended to keep this for the
    original, default database. Afterall Rails _has_ to connect to something
    on boot. In development only one connection is connected on boot since
    we don't eager load the app.
    
    Originally we had thought that all applications should be required to
    add a `primary` entry in the database configurations file. However,
    this hasn't worked in practice and we have some code now that does not
    assume there's a primary. The schema dumping/loading code however,
    still assumed there was a "primary" in the configurations file.
    
    We want the "default" database in any application to use the original
    files even when converted to a multiple database application as this
    reduces the need to make changes when implementing this functionality on
    an existing application.
    
    The changes here update Rails to ensure that we treat either "primary"
    or the first database configuration for an environment as "default".
    If there is a "primary" that will be used as the default configuration.
    If there is no primary the configuration that is first for an
    environment will be used as the default. For schema dump/load this means
    that the default configuration (primary or first) will use `schema.rb`
    as the filename and other configurations will use
    `[CONFIGURATION_NAME]_schema.rb`.
    
    This should also help us finish the pull request to infer migrations
    paths since now we can say the first configuration is the default. This
    is a natural assumption for application developers.
    
    Followup to #39536
    ee9e308f
database_tasks.rb 18.6 KB