提交 b9ad3078 编写于 作者: E Eileen M. Uchitelle 提交者: eileencodes

Merge pull request #36845 from eileencodes/fix-pg-closed-connection

Fix `PG::ConnectionBad` error when running fixtures
上级 8354eafc
......@@ -531,15 +531,15 @@ def instantiate_all_loaded_fixtures(object, load_instances = true)
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?
......@@ -549,9 +549,9 @@ def create_fixtures(fixtures_directory, fixture_set_names, class_names = {}, con
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+.
......@@ -591,7 +591,11 @@ def read_and_insert(fixtures_directory, fixture_files, class_names, connection)
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|
......@@ -602,6 +606,7 @@ def insert(fixture_sets, connection) # :nodoc:
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).
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册