diff options
Diffstat (limited to 'activerecord/test/support/config.rb')
-rw-r--r-- | activerecord/test/support/config.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/support/config.rb b/activerecord/test/support/config.rb new file mode 100644 index 0000000000..de0d90a18f --- /dev/null +++ b/activerecord/test/support/config.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require "yaml" +require "erb" +require "fileutils" +require "pathname" + +module ARTest + class << self + def config + @config ||= read_config + end + + private + + def config_file + Pathname.new(ENV["ARCONFIG"] || TEST_ROOT + "/config.yml") + end + + def read_config + unless config_file.exist? + FileUtils.cp TEST_ROOT + "/config.example.yml", config_file + end + + erb = ERB.new(config_file.read) + expand_config(YAML.parse(erb.result(binding)).transform) + end + + def expand_config(config) + config["connections"].each do |adapter, connection| + dbs = [["arunit", "activerecord_unittest"], ["arunit2", "activerecord_unittest2"], + ["arunit_without_prepared_statements", "activerecord_unittest"]] + dbs.each do |name, dbname| + unless connection[name].is_a?(Hash) + connection[name] = { "database" => connection[name] } + end + + connection[name]["database"] ||= dbname + connection[name]["adapter"] ||= adapter + end + end + + config + end + end +end |