提交 4f912de2 编写于 作者: J John Hawthorn

Merge pull request #36873 from jhawthorn/schema_sha_parallel

Sync parallel test DBs to schema using SHA
上级 0169c93b
......@@ -348,6 +348,24 @@ def schema_up_to_date?(configuration, format = ActiveRecord::Base.schema_format,
ActiveRecord::InternalMetadata[:schema_sha1] == schema_sha1(file)
end
def reconstruct_from_schema(configuration, format = ActiveRecord::Base.schema_format, file = nil, environment = env, spec_name = "primary") # :nodoc:
file ||= dump_filename(spec_name, format)
check_schema_file(file)
ActiveRecord::Base.establish_connection(configuration)
if schema_up_to_date?(configuration, format, file, environment, spec_name)
truncate_tables(configuration)
else
purge(configuration)
load_schema(configuration, format, file, environment, spec_name)
end
rescue ActiveRecord::NoDatabaseError
create(configuration)
load_schema(configuration, format, file, environment, spec_name)
end
def dump_schema(configuration, format = ActiveRecord::Base.schema_format, spec_name = "primary") # :nodoc:
require "active_record/schema_dumper"
filename = dump_filename(spec_name, format)
......
......@@ -8,31 +8,16 @@ module TestDatabases # :nodoc:
create_and_load_schema(i, env_name: Rails.env)
end
ActiveSupport::Testing::Parallelization.run_cleanup_hook do
drop(env_name: Rails.env)
end
def self.create_and_load_schema(i, env_name:)
old, ENV["VERBOSE"] = ENV["VERBOSE"], "false"
ActiveRecord::Base.configurations.configs_for(env_name: env_name).each do |db_config|
db_config.config["database"] += "-#{i}"
ActiveRecord::Tasks::DatabaseTasks.create(db_config.config)
ActiveRecord::Tasks::DatabaseTasks.load_schema(db_config.config, ActiveRecord::Base.schema_format, nil, env_name, db_config.spec_name)
ActiveRecord::Tasks::DatabaseTasks.reconstruct_from_schema(db_config.config, ActiveRecord::Base.schema_format, nil, env_name, db_config.spec_name)
end
ensure
ActiveRecord::Base.establish_connection(Rails.env.to_sym)
ENV["VERBOSE"] = old
end
def self.drop(env_name:)
old, ENV["VERBOSE"] = ENV["VERBOSE"], "false"
ActiveRecord::Base.configurations.configs_for(env_name: env_name).each do |db_config|
ActiveRecord::Tasks::DatabaseTasks.drop(db_config.config)
end
ensure
ENV["VERBOSE"] = old
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册