method
resolve_symbol_connection
rails latest stable - Class:
ActiveRecord::DatabaseConfigurations
resolve_symbol_connection(name)private
No documentation available.
# File activerecord/lib/active_record/database_configurations.rb, line 225
def resolve_symbol_connection(name)
if db_config = find_db_config(name)
db_config
else
raise AdapterNotSpecified, <<~MSG
The `#{name}` database is not configured for the `#{default_env}` environment.
Available database configurations are:
#{build_configuration_sentence}
MSG
end
end
def build_configuration_sentence
configs = configs_for(include_hidden: true)
configs.group_by(&:env_name).map do |env, config|
names = config.map(&:name)
if names.size > 1
"#{env}: #{names.join(", ")}"
else
env
end
end.join("\n")
end
def build_db_config_from_raw_config(env_name, name, config)
case config
when String
build_db_config_from_string(env_name, name, config)
when Hash
build_db_config_from_hash(env_name, name, config.symbolize_keys)
else
raise InvalidConfigurationError, "'{ #{env_name} => #{config} }' is not a valid configuration. Expected '#{config}' to be a URL string or a Hash."
end
end
def build_db_config_from_string(env_name, name, config)
url = config
uri = URI.parse(url)
if uri.scheme
UrlConfig.new(env_name, name, url)
else
raise InvalidConfigurationError, "'{ #{env_name} => #{config} }' is not a valid configuration. Expected '#{config}' to be a URL string or a Hash."
end
end
def build_db_config_from_hash(env_name, name, config)
url = config[:url]
config_without_url = config.dup
config_without_url.delete :url
DatabaseConfigurations.db_config_handlers.reverse_each do |handler|
config = handler.call(env_name, name, url, config_without_url)
return config if config
end
nil
end
def merge_db_environment_variables(current_env, configs)
configs.map do |config|
next config if config.is_a?(UrlConfig) || config.env_name != current_env
url_config = environment_url_config(current_env, config.name, config.configuration_hash)
url_config || config
end
end
def environment_url_config(env, name, config)
url = environment_value_for(name)
return unless url
UrlConfig.new(env, name, url, config)
end
def environment_value_for(name)
name_env_key = "#{name.upcase}_DATABASE_URL"
url = ENV[name_env_key]
url ||= ENV["DATABASE_URL"] if name == "primary"
url
end
end