diff options
author | eileencodes <eileencodes@gmail.com> | 2019-07-31 12:22:01 -0400 |
---|---|---|
committer | eileencodes <eileencodes@gmail.com> | 2019-07-31 12:22:01 -0400 |
commit | cd148be07298e298bb84f5df7b973f2b188830ee (patch) | |
tree | 61adca8929aa6274cf4526395e78cd82cac07cd5 | |
parent | 4c8c8c87b07844b26564ca6aa2052660e601bc3d (diff) | |
download | rails-cd148be07298e298bb84f5df7b973f2b188830ee.tar.gz rails-cd148be07298e298bb84f5df7b973f2b188830ee.tar.bz2 rails-cd148be07298e298bb84f5df7b973f2b188830ee.zip |
Fix db:seed
The `rake db:seed` command was broken for the primary environment if the
application is using multiple databases. We never implemented `rake
db:seed` for other databases (coming soon), but that shouldn't break the
default case.
The reason this was broken was because `abort_if_pending_migrations`
would loop through the configs for all databases and check for
migrations but would leave the last established connection. So `db:seed`
was looking in the wrong database for the table to seed.
This PR doesn't fix the fact that `db:seed` doesn't work for multiple
databases but does fix the default case.
Fixes #36817
Co-authored-by: John Crepezzi <john.crepezzi@gmail.com>
-rw-r--r-- | activerecord/lib/active_record/railties/databases.rake | 2 | ||||
-rw-r--r-- | railties/test/application/rake/multi_dbs_test.rb | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake index 4d9acc911b..d699e2e21b 100644 --- a/activerecord/lib/active_record/railties/databases.rake +++ b/activerecord/lib/active_record/railties/databases.rake @@ -265,6 +265,8 @@ db_namespace = namespace :db do end abort %{Run `rails db:migrate` to update your database then try again.} end + ensure + ActiveRecord::Base.establish_connection(ActiveRecord::Tasks::DatabaseTasks.env.to_sym) end namespace :abort_if_pending_migrations do diff --git a/railties/test/application/rake/multi_dbs_test.rb b/railties/test/application/rake/multi_dbs_test.rb index 2606e64424..c5f8904f4e 100644 --- a/railties/test/application/rake/multi_dbs_test.rb +++ b/railties/test/application/rake/multi_dbs_test.rb @@ -349,6 +349,25 @@ module ApplicationTests rails "db:drop" rescue nil end end + + test "db:seed uses primary database connection" do + @old_rails_env = ENV["RAILS_ENV"] + @old_rack_env = ENV["RACK_ENV"] + ENV.delete "RAILS_ENV" + ENV.delete "RACK_ENV" + + db_migrate_and_schema_dump_and_load "schema" + + app_file "db/seeds.rb", <<-RUBY + print Book.connection.pool.spec.config[:database] + RUBY + + output = rails("db:seed") + assert_equal output, "db/development.sqlite3" + ensure + ENV["RAILS_ENV"] = @old_rails_env + ENV["RACK_ENV"] = @old_rack_env + end end end end |