Spec-Zone.ru › Ruby on Rails 7.2

class ActiveRecord::DatabaseConfigurations

Parent:
Object

Настройки базы данных Active Record

ActiveRecord::DatabaseConfigurations возвращает массив DatabaseConfig объектов, созданных на основе конфигурации базы данных приложения или строки URL.

Массив DatabaseConfig объектов в приложении по умолчанию задаётся либо HashConfig, либо UrlConfig. Вы можете получить конфигурацию приложения, используя ActiveRecord::Base.configurations.

Если вы зарегистрируете обработчик, объекты будут создаваться в соответствии с условиями обработчика. Дополнительную информацию о регистрации пользовательских обработчиков см. в ::register_db_config_handler.

Атрибуты

configurations[R]

Публичные методы класса

new(configurations = {}) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 73
def initialize(configurations = {})
  @configurations = build_configs(configurations)
end
register_db_config_handler(&block) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 61
def self.register_db_config_handler(&block)
  db_config_handlers << block
end

Позволяет приложению зарегистрировать пользовательский обработчик для объектов конфигурации базы данных. Это полезно для создания пользовательского обработчика, который отвечает на методы, необходимые вашему приложению, но не реализуемые Active Record. Например, если вы используете Vitess, вы можете захотеть, чтобы ваши конфигурации Vitess отвечали на запрос «фрагментирован?». Для этого определите следующее в файле инициализации:

ActiveRecord::DatabaseConfigurations.register_db_config_handler do |env_name, name, url, config|
  next unless config.key?(:vitess)
  VitessConfig.new(env_name, name, config)
end

Примечание: приложения должны обрабатывать условие, при котором пользовательский конфиг должен быть создан в вашем обработчике, иначе все объекты будут использовать пользовательский обработчик.

Затем определите ваш VitessConfig для ответа на методы, необходимые вашему приложению. Рекомендуется наследовать от одного из существующих классов конфигурации базы данных, чтобы избежать необходимости повторной реализации всех методов. Пользовательские обработчики конфигурации должны реализовывать только те методы, которые не реализованы в Active Record.

class VitessConfig < ActiveRecord::DatabaseConfigurations::UrlConfig
  def sharded?
    configuration_hash.fetch("sharded", false)
  end
end

Для конфигураций, имеющих ключ :vitess, будет создан объект VitessConfig, а не UrlConfig.

Публичные методы экземпляра

blank?()
Псевдоним для: empty?
configs_for(env_name: nil, name: nil, config_key: nil, include_hidden: false) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 98
def configs_for(env_name: nil, name: nil, config_key: nil, include_hidden: false)
  env_name ||= default_env if name
  configs = env_with_configs(env_name)

  unless include_hidden
    configs = configs.select do |db_config|
      db_config.database_tasks?
    end
  end

  if config_key
    configs = configs.select do |db_config|
      db_config.configuration_hash.key?(config_key)
    end
  end

  if name
    configs.find do |db_config|
      db_config.name == name.to_s
    end
  else
    configs
  end
end

Сбор конфигураций для среды и, необязательно, имени спецификации. Чтобы включить реплики, передайте include_hidden: true.

Если имя указано, будет возвращен один объект DatabaseConfig, в противном случае — массив DatabaseConfig объектов, соответствующих запрошенной среде и типу.

Параметры

  • env_name: Имя среды. По умолчанию nil, что соберет конфигурации для всех сред.

  • name: Имя конфигурации базы данных (например, primary, animals и т. д.). По умолчанию nil. Если env_name не указан, возвращаются конфигурации для среды по умолчанию и переданного name.

  • config_key: Выбирает конфигурации, содержащие определенный ключ в хэше конфигурации. Полезно для выбора конфигураций, использующих пользовательский обработчик конфигурации базы данных, или поиска конфигураций с хэшами, содержащими определенный ключ.

  • include_hidden: Определяет, следует ли включать реплики и конфигурации, скрытые database_tasks: false, в возвращаемый список. Большинство времени мы итерируем только по первичным соединениям (т. е. миграции не должны выполняться для подключения записи и чтения). По умолчанию false.

empty?() Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 150
def empty?
  configurations.empty?
end

Проверяет, пуста ли конфигурация базы данных приложения.

Также алиас: blank?
find_db_config(env) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 127
def find_db_config(env)
  env = env.to_s
  configurations.find do |db_config|
    db_config.for_current_env? && (db_config.env_name == env || db_config.name == env)
  end || configurations.find do |db_config|
    db_config.env_name == env
  end
end

Возвращает один объект DatabaseConfig на основе запрошенной среды.

Если у приложения несколько баз данных, find_db_config вернёт первый DatabaseConfig для среды.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API