method
resolve
v8.1.1 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters
resolve(adapter_name)public
No documentation available.
# File activerecord/lib/active_record/connection_adapters.rb, line 26
def resolve(adapter_name) # :nodoc:
# Require the adapter itself and give useful feedback about
# 1. Missing adapter gems.
# 2. Incorrectly registered adapters.
# 3. Adapter gems' missing dependencies.
class_name, path_to_adapter = @adapters[adapter_name.to_s]
unless class_name
raise AdapterNotFound, <<~MSG.squish
Database configuration specifies nonexistent '#{adapter_name}' adapter.
Available adapters are: #{@adapters.keys.sort.join(", ")}.
Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary
adapter gem to your Gemfile if it's not in the list of available adapters.
MSG
end
unless Object.const_defined?(class_name)
begin
require path_to_adapter
rescue LoadError => error
# We couldn't require the adapter itself.
if error.path == path_to_adapter
# We can assume here that a non-builtin adapter was specified and the path
# registered by the adapter gem is incorrect.
raise LoadError, "Error loading the '#{adapter_name}' Active Record adapter. Ensure that the path registered by the adapter gem is correct. #{error.message}", error.backtrace
else
# Bubbled up from the adapter require. Prefix the exception message
# with some guidance about how to address it and reraise.
raise LoadError, "Error loading the '#{adapter_name}' Active Record adapter. Missing a gem it depends on? #{error.message}", error.backtrace
end
end
end
begin
Object.const_get(class_name)
rescue NameError => error
raise AdapterNotFound, "Could not load the #{class_name} Active Record adapter (#{error.message})."
end
end