Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::DatabaseConfigurations

Родительский класс:
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 75
def initialize(configurations = {})
  @configurations = build_configs(configurations)
end
register_db_config_handler (&block) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 63
def self.register_db_config_handler(&block)
  db_config_handlers << block
end

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

ActiveSupport.on_load(:active_record_database_configurations) do
  ActiveRecord::DatabaseConfigurations.register_db_config_handler do |env_name, name, url, config|
    next unless config.key?(:vitess)
    VitessConfig.new(env_name, name, config)
  end
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 100
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 152
def empty?
  configurations.empty?
end

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

Также имеет псевдоним: blank?
find_db_config (env) Показать исходный код
# File activerecord/lib/active_record/database_configurations.rb, line 129
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