diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2019-08-04 15:25:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-04 15:25:05 -0400 |
commit | 2c0b67c2810e74c643afd018da5e511055281f4d (patch) | |
tree | 2861b0f29754caae0af558d3c3686bfbb3e211c5 | |
parent | 5f3848a979e6be15a4d8bedcb9c68587094094fe (diff) | |
parent | bfec23aecb71b351b84e4c4592494f68f4d47be2 (diff) | |
download | rails-2c0b67c2810e74c643afd018da5e511055281f4d.tar.gz rails-2c0b67c2810e74c643afd018da5e511055281f4d.tar.bz2 rails-2c0b67c2810e74c643afd018da5e511055281f4d.zip |
Merge pull request #36845 from eileencodes/fix-pg-closed-connection
Fix `PG::ConnectionBad` error when running fixtures
-rw-r--r-- | activerecord/lib/active_record/fixtures.rb | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb index 3df4b3c87f..e4b958f1b9 100644 --- a/activerecord/lib/active_record/fixtures.rb +++ b/activerecord/lib/active_record/fixtures.rb @@ -553,15 +553,15 @@ module ActiveRecord end end - def create_fixtures(fixtures_directory, fixture_set_names, class_names = {}, config = ActiveRecord::Base) + def create_fixtures(fixtures_directory, fixture_set_names, class_names = {}, config = ActiveRecord::Base, &block) fixture_set_names = Array(fixture_set_names).map(&:to_s) class_names = ClassCache.new class_names, config # FIXME: Apparently JK uses this. - connection = block_given? ? yield : ActiveRecord::Base.connection + connection = block_given? ? block : lambda { ActiveRecord::Base.connection } fixture_files_to_read = fixture_set_names.reject do |fs_name| - fixture_is_cached?(connection, fs_name) + fixture_is_cached?(connection.call, fs_name) end if fixture_files_to_read.any? @@ -571,9 +571,9 @@ module ActiveRecord class_names, connection, ) - cache_fixtures(connection, fixtures_map) + cache_fixtures(connection.call, fixtures_map) end - cached_fixtures(connection, fixture_set_names) + cached_fixtures(connection.call, fixture_set_names) end # Returns a consistent, platform-independent identifier for +label+. @@ -612,7 +612,11 @@ module ActiveRecord def insert(fixture_sets, connection) # :nodoc: fixture_sets_by_connection = fixture_sets.group_by do |fixture_set| - fixture_set.model_class&.connection || connection + if fixture_set.model_class + fixture_set.model_class.connection + else + connection.call + end end fixture_sets_by_connection.each do |conn, set| @@ -623,6 +627,7 @@ module ActiveRecord table_rows_for_connection[table].unshift(*rows) end end + conn.insert_fixtures_set(table_rows_for_connection, table_rows_for_connection.keys) # Cap primary key sequences to max(pk). |