класс 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 end
Инициализировать новый объект HashConfig
Параметры
-
env_name- СредаRails, например, “development”. -
name- Имя конфигурации БД. В стандартной двухъярусной конфигурации БД это значение по умолчанию «primary». В многоярусной конфигурации БД (трехъярусной) это имя, используемое во втором ярусе, например, «primary_readonly». -
configuration_hash- Хэш конфигурации. Это хэш, содержащий адаптер базы данных, имя и другую важную информацию для подключения к базе данных.
Методы публичного экземпляра
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 107 def adapter configuration_hash[:adapter]&.to_s end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 92 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 64 def database configuration_hash[:database] end
# 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 # File activerecord/lib/active_record/database_configurations/hash_config.rb, line 56 def host configuration_hash[:host] end
# 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
# 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
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 88 def max_queue max_threads * 4 end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 80 def max_threads (configuration_hash[:max_threads] || pool).to_i end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 52 def migrations_paths configuration_hash[:migrations_paths] end
Пути миграций для конфигурации базы данных. Если ключ migrations_paths присутствует в конфигурации, migrations_paths вернёт его значение.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 76 def min_threads (configuration_hash[:min_threads] || 0).to_i end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 72 def pool (configuration_hash[:pool] || 5).to_i end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 84 def query_cache configuration_hash[:query_cache] end
# 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.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 46 def replica? configuration_hash[:replica] end
Определяет, предназначена ли конфигурация базы данных для реплики/только для чтения соединения. Если ключ replica присутствует в конфигурации, replica? вернёт true.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 113 def schema_cache_path configuration_hash[:schema_cache_path] end
Путь к файлу кеша схемы базы данных. Если опущено, имя файла будет считано из среды или будет выведено по умолчанию.
# 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.