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.
Атрибуты
Публичные методы класса
# 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— хеш конфигурации. Этот хеш содержит адаптер базы данных, имя и другие важные сведения для подключения к базе данных.
Публичные методы экземпляра
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 130 def adapter configuration_hash[:adapter]&.to_s end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 112 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 65 def database configuration_hash[:database] end
# 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 # File activerecord/lib/active_record/database_configurations/hash_config.rb, line 57 def host configuration_hash[:host] end
# 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
# 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
# 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
# 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 # 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 # File activerecord/lib/active_record/database_configurations/hash_config.rb, line 108 def max_queue max_threads * 4 end
# 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
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 53 def migrations_paths configuration_hash[:migrations_paths] end
Пути к миграциям для конфигурации базы данных. Если в конфигурации присутствует ключ migrations_paths, migrations_paths вернёт его значение.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 80 def min_connections (configuration_hash[:min_connections] || 0).to_i end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 87 def min_threads (configuration_hash[:min_threads] || 0).to_i end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 104 def query_cache configuration_hash[:query_cache] end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 47 def replica? configuration_hash[:replica] end
Определяет, предназначена ли конфигурация базы данных для реплики или подключения только для чтения. Если в конфигурации присутствует ключ replica, replica? вернёт true.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 136 def schema_cache_path configuration_hash[:schema_cache_path] end
Путь к файлу дампа кэша схемы базы данных. Если он не указан, имя файла будет получено из ENV или задано по умолчанию.
# 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 сформирует имя файла на основе имени конфигурации базы данных.
# 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.