Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::DatabaseConfigurations::HashConfig

Конфигурация базы данных Active Record Hash

Объект HashConfig создаётся для каждой записи конфигурации базы данных, заданной в виде хеша.

Конфигурация в виде хеша:

{ "development" => { "database" => "db_name" } }

Преобразуется в:

#<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fd1acbded10
  @env_name="development", @name="primary", @config={database: "db_name"}>

Дополнительные сведения см. в разделе ActiveRecord::DatabaseConfigurations.

Атрибуты

configuration_hash [R]

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

new (env_name, name, configuration_hash) Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 38
def initialize(env_name, name, configuration_hash)
  super(env_name, name)
  @configuration_hash = configuration_hash.symbolize_keys.freeze
  validate_configuration!
end

Инициализирует новый объект HashConfig

Параметры

  • env_name — окружение Rails, например «development».

  • name — имя конфигурации базы данных. Для стандартной двухуровневой конфигурации базы данных по умолчанию используется значение «primary». Для трёхуровневой конфигурации с несколькими базами данных это имя, используемое на втором уровне, например «primary_readonly».

  • configuration_hash — хеш конфигурации. Этот хеш содержит адаптер базы данных, имя и другие важные сведения для подключения к базе данных.

Вызывает метод суперкласса

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

adapter () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 130
def adapter
  configuration_hash[:adapter]&.to_s
end
checkout_timeout () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 112
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end
database () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 65
def database
  configuration_hash[:database]
end
default_schema_cache_path (db_dir = "db") Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 140
def default_schema_cache_path(db_dir = "db")
  if primary?
    File.join(db_dir, "schema_cache.yml")
  else
    File.join(db_dir, "#{name}_schema_cache.yml")
  end
end
host () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 57
def host
  configuration_hash[:host]
end
idle_timeout () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 120
def idle_timeout
  timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
  timeout if timeout > 0
end
keepalive () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 125
def keepalive
  keepalive = (configuration_hash[:keepalive] || 600).to_f
  keepalive if keepalive > 0
end
lazy_schema_cache_path () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 148
def lazy_schema_cache_path
  schema_cache_path || default_schema_cache_path
end
max_age () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 95
def max_age
  v = configuration_hash[:max_age]&.to_i
  if v && v > 0
    v
  else
    Float::INFINITY
  end
end
max_connections () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 73
def max_connections
  max_connections = configuration_hash.fetch(:max_connections) {
    configuration_hash.fetch(:pool, 5)
  }&.to_i
  max_connections if max_connections && max_connections >= 0
end
Также имеет псевдоним: pool
max_queue () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 108
def max_queue
  max_threads * 4
end
max_threads () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 91
def max_threads
  (configuration_hash[:max_threads] || (max_connections || 5).clamp(0, 5)).to_i
end
migrations_paths () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 53
def migrations_paths
  configuration_hash[:migrations_paths]
end

Пути к миграциям для конфигурации базы данных. Если в конфигурации присутствует ключ migrations_paths, migrations_paths вернёт его значение.

min_connections () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 80
def min_connections
  (configuration_hash[:min_connections] || 0).to_i
end
min_threads () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 87
def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end
pool ()
Псевдоним для: max_connections
query_cache () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 104
def query_cache
  configuration_hash[:query_cache]
end
replica? () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 47
def replica?
  configuration_hash[:replica]
end

Определяет, предназначена ли конфигурация базы данных для реплики или подключения только для чтения. Если в конфигурации присутствует ключ replica, replica? вернёт true.

schema_cache_path () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 136
def schema_cache_path
  configuration_hash[:schema_cache_path]
end

Путь к файлу дампа кэша схемы базы данных. Если он не указан, имя файла будет получено из ENV или задано по умолчанию.

schema_dump (format = schema_format) Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 172
def schema_dump(format = schema_format)
  if configuration_hash.key?(:schema_dump)
    if config = configuration_hash[:schema_dump]
      config
    end
  elsif primary?
    schema_file_type(format)
  else
    "#{name}_#{schema_file_type(format)}"
  end
end

Определяет, нужно ли создавать дампы файлов схемы/структуры и какое имя файла следует использовать.

Если для configuration_hash[:schema_dump] задано значение false или nil, дамп схемы создаваться не будет.

Если задан параметр конфигурации, будет использовано его значение. В противном случае Rails сформирует имя файла на основе имени конфигурации базы данных.

seeds? () Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 160
def seeds?
  configuration_hash.fetch(:seeds, primary?)
end

Определяет, должна ли задача db:prepare заполнить базу данных данными из db/seeds.rb.

Если в конфигурации присутствует ключ seeds, seeds? вернёт его значение. В противном случае для основной базы данных будет возвращено true, а для всех остальных конфигураций — false.

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

Spec-Zone.ru

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