Spec-Zone.ru › Ruby on Rails 7.1

класс ActiveRecord::DatabaseConfigurations

Родитель:
Объект

Настройки базы данных 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, вместо объекта UrlConfig будет создан объект VitessConfig.

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

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
    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