class Rails::Application::Configuration
def database_configuration
Loads and returns the entire raw configuration of database from
def database_configuration path = paths["config/database"].existent.first yaml = Pathname.new(path) if path config = if yaml&.exist? loaded_yaml = ActiveSupport::ConfigurationFile.parse(yaml) if (shared = loaded_yaml.delete("shared")) loaded_yaml.each do |env, config| if config.is_a?(Hash) && config.values.all?(Hash) if shared.is_a?(Hash) && shared.values.all?(Hash) config.map do |name, sub_config| sub_config.reverse_merge!(shared[name]) end else config.map do |name, sub_config| sub_config.reverse_merge!(shared) end end else config.reverse_merge!(shared) end end end Hash.new(shared).merge(loaded_yaml) elsif ENV["DATABASE_URL"] # Value from ENV['DATABASE_URL'] is set to default database connection # by Active Record. {} else raise "Could not load database configuration. No such file - #{paths["config/database"].instance_variable_get(:@paths)}" end config rescue => e raise e, "Cannot load database configuration:\n#{e.message}", e.backtrace end