class ActiveRecord::DatabaseConfigurations::HashConfig
Active Record Database Hash Config¶ ↑
A HashConfig object is created for each database configuration entry that is created from a hash.
A hash config:
{ "development" => { "database" => "db_name" } }
Becomes:
#<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fd1acbded10
@env_name="development", @name="primary", @config={database: "db_name"}>
See ActiveRecord::DatabaseConfigurations for more info.
Attributes
Public Class Methods
Initialize a new HashConfig object
Parameters¶ ↑
-
env_name- TheRailsenvironment, i.e. “development”. -
name- The db config name. In a standard two-tier database configuration this will default to “primary”. In a multiple database three-tier database configuration this corresponds to the name used in the second tier, for example “primary_readonly”. -
configuration_hash- The config hash. This is the hash that contains the database adapter, name, and other important information for database connections.
# 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
Public Instance Methods
# 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
The migrations paths for a database configuration. If the migrations_paths key is present in the config, migrations_paths will return its value.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 53 def migrations_paths configuration_hash[:migrations_paths] end
# 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
Determines whether a database configuration is for a replica / readonly connection. If the replica key is present in the config, replica? will return true.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 47 def replica? configuration_hash[:replica] end
The path to the schema cache dump file for a database. If omitted, the filename will be read from ENV or a default will be derived.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 136 def schema_cache_path configuration_hash[:schema_cache_path] end
Determines whether to dump the schema/structure files and the filename that should be used.
If configuration_hash[:schema_dump] is set to false or nil the schema will not be dumped.
If the config option is set that will be used. Otherwise Rails will generate the filename from the database config name.
# 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
Determines whether the db:prepare task should seed the database from db/seeds.rb.
If the seeds key is present in the config, seeds? will return its value. Otherwise, it will return true for the primary database and false for all other configs.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 160 def seeds? configuration_hash.fetch(:seeds, primary?) end