Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveRecord::DatabaseConfigurations::HashConfig

Родитель:
ActiveRecord::DatabaseConfigurations::DatabaseConfig

Конфигурация базы данных 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
end

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

Параметры

  • env_name - Среда Rails, например, “development”.

  • name - Имя конфигурации БД. В стандартной двухъярусной конфигурации БД это значение по умолчанию «primary». В многоярусной конфигурации БД (трехъярусной) это имя, используемое во втором ярусе, например, «primary_readonly».

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

Вызывает метод родительского класса

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

adapter() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 107
def adapter
  configuration_hash[:adapter]&.to_s
end
checkout_timeout() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 92
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end
database() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 64
def database
  configuration_hash[:database]
end
default_schema_cache_path(db_dir = "db") Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 117
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 56
def host
  configuration_hash[:host]
end
idle_timeout() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 102
def idle_timeout
  timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
  timeout if timeout > 0
end
lazy_schema_cache_path() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 125
def lazy_schema_cache_path
  schema_cache_path || default_schema_cache_path
end
max_queue() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 88
def max_queue
  max_threads * 4
end
max_threads() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 80
def max_threads
  (configuration_hash[:max_threads] || pool).to_i
end
migrations_paths() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 52
def migrations_paths
  configuration_hash[:migrations_paths]
end

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

min_threads() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 76
def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end
pool() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 72
def pool
  (configuration_hash[:pool] || 5).to_i
end
query_cache() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 84
def query_cache
  configuration_hash[:query_cache]
end
reaping_frequency() Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 98
def reaping_frequency
  configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end

reaping_frequency настраивается в основном по историческим причинам, но она также может быть полезна, если кому-то нужен очень низкий idle_timeout.

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

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

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

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

schema_dump(format = ActiveRecord.schema_format) Показать исходный код
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 141
def schema_dump(format = ActiveRecord.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 сгенерирует имя файла из имени конфигурации базы данных.

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

Spec-Zone.ru

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