diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index c92dd2c10f03c91259c459cb5fcf83c32d42b53c..a66a1ac7ed15fa49fda05ca93b0f9af112a8deb0 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -129,13 +129,11 @@ class Railtie < Rails::Railtie # :nodoc: if config.active_record.delete(:use_schema_cache_dump) config.after_initialize do |app| ActiveSupport.on_load(:active_record) do - db_config = ActiveRecord::Base.configurations.configs_for( - env_name: Rails.env, - name: "primary", - ) + db_config = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).first + filename = ActiveRecord::Tasks::DatabaseTasks.cache_dump_filename( - "primary", - schema_cache_path: db_config&.schema_cache_path, + db_config.name, + schema_cache_path: db_config&.schema_cache_path ) cache = ActiveRecord::ConnectionAdapters::SchemaCache.load_from(filename) diff --git a/railties/test/application/rake/dbs_test.rb b/railties/test/application/rake/dbs_test.rb index cd9b98c4a11bd94777ad5210bd189a78b451e342..abf6a1f5e98d42e25271a52be91e8aec06b370eb 100644 --- a/railties/test/application/rake/dbs_test.rb +++ b/railties/test/application/rake/dbs_test.rb @@ -343,11 +343,14 @@ def db_migrate_and_status(expected_database) db_migrate_and_status database_url_db_name end - def db_schema_dump + def db_schema_dump(database: nil) Dir.chdir(app_path) do - rails "generate", "model", "book", "title:string" + args = ["generate", "model", "book", "title:string"] + args << "--database=#{database}" if database + rails args rails "db:migrate", "db:schema:dump" - schema_dump = File.read("db/schema.rb") + dump_name = database ? "#{database}_schema.rb" : "schema.rb" + schema_dump = File.read("db/#{dump_name}") assert_match(/create_table \"books\"/, schema_dump) end end @@ -412,7 +415,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml") ENV["SCHEMA_CACHE"] = @old_schema_cache_env end - test "db:schema:cache:dump primary wins" do + test "db:schema:cache:dump first config wins" do Dir.chdir(app_path) do File.open("#{app_path}/config/database.yml", "w") do |f| f.puts <<-YAML @@ -426,6 +429,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml") some_entry: <<: *default database: db/development_other.sqlite3 + migrations_paths: db/some_entry_migrate primary: <<: *default database: db/development.sqlite3 @@ -433,7 +437,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml") end end - db_schema_dump + db_schema_dump(database: "some_entry") db_schema_cache_dump end