class ActiveRecord::DatabaseConfigurations
ActiveRecord::DatabaseConfigurations возвращает массив объектов DatabaseConfig (либо HashConfig, либо UrlConfig), созданных из конфигурационного хеша или строчки URL базы данных приложения.
Атрибуты
Публичные методы класса
# File activerecord/lib/active_record/database_configurations.rb, line 18
def initialize(configurations = {})
@configurations = build_configs(configurations)
end Публичные методы экземпляра
# File activerecord/lib/active_record/database_configurations.rb, line 40
def configs_for(env_name: nil, spec_name: nil, name: nil, include_replicas: false)
if spec_name
name = spec_name
ActiveSupport::Deprecation.warn("The kwarg `spec_name` is deprecated in favor of `name`. `spec_name` will be removed in Rails 6.2")
end
env_name ||= default_env if name
configs = env_with_configs(env_name)
unless include_replicas
configs = configs.select do |db_config|
!db_config.replica?
end
end
if name
configs.find do |db_config|
db_config.name == name
end
else
configs
end
end Собирает конфигурации для указанной среды и, необязательно, имени спецификации. Для включения реплицированных конфигураций передайте include_replicas: true.
Если указано имя, возвращается единственный объект DatabaseConfig, в противном случае — массив объектов DatabaseConfig, соответствующих запрошенной среде и типу.
Параметры
-
env_name:Имя среды. По умолчаниюnil— собирает конфигурации для всех сред. -
name:Имя конфигурации БД (например, primary, animals и т. д.). По умолчаниюnil. Если не указаноenv_name, возвращается конфигурация для стандартной среды и переданногоname. -
include_replicas:Определяет, следует ли включать реплики в возвращаемый список. В большинстве случаев мы итерируем только по соединениям для записи (например, миграции не нуждаются в выполнении для соединений для записи и чтения). По умолчаниюfalse.
# File activerecord/lib/active_record/database_configurations.rb, line 70 def default_hash(env = default_env) default = find_db_config(env) default.configuration_hash if default end
Возвращает хеш конфигурации, соответствующий среде.
Если у приложения несколько баз данных, default_hash вернет первый хеш конфигурации для среды.
{ database: "my_db", adapter: "mysql2" }
# File activerecord/lib/active_record/database_configurations.rb, line 114 def empty? configurations.empty? end
Проверяет, пуста ли конфигурация базы данных приложения.
Алиас для blank?
# File activerecord/lib/active_record/database_configurations.rb, line 81
def find_db_config(env)
configurations
.sort_by.with_index { |db_config, i| db_config.for_current_env? ? [0, i] : [1, i] }
.find do |db_config|
db_config.env_name == env.to_s ||
(db_config.for_current_env? && db_config.name == env.to_s)
end
end Возвращает единственный объект DatabaseConfig, соответствующий запрошенной среде.
Если у приложения несколько баз данных, find_db_config вернёт первый объект DatabaseConfig для среды.
# File activerecord/lib/active_record/database_configurations.rb, line 104
def to_h
configurations.inject({}) do |memo, db_config|
memo.merge(db_config.env_name => db_config.configuration_hash.stringify_keys)
end
end Возвращает объект DatabaseConfigurations в виде Hash.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.