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
Source
# File 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
Initialize a new HashConfig object
Parameters¶ ↑
-
env_name- The Rails environment, 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.
Public Instance Methods
Source
# File lib/active_record/database_configurations/hash_config.rb, line 130 def adapter configuration_hash[:adapter]&.to_s end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 112 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 65 def database configuration_hash[:database] end
Source
# File 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
Source
# File lib/active_record/database_configurations/hash_config.rb, line 57 def host configuration_hash[:host] end
Source
# File 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
Source
# File lib/active_record/database_configurations/hash_config.rb, line 125 def keepalive keepalive = (configuration_hash[:keepalive] || 600).to_f keepalive if keepalive > 0 end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 148 def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end
Source
# File 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
Source
# File 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
Source
# File lib/active_record/database_configurations/hash_config.rb, line 108 def max_queue max_threads * 4 end
Source
# File 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
Source
# File lib/active_record/database_configurations/hash_config.rb, line 53 def migrations_paths configuration_hash[:migrations_paths] end
The migrations paths for a database configuration. If the migrations_paths key is present in the config, migrations_paths will return its value.
Source
# File lib/active_record/database_configurations/hash_config.rb, line 80 def min_connections (configuration_hash[:min_connections] || 0).to_i end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 87 def min_threads (configuration_hash[:min_threads] || 0).to_i end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 104 def query_cache configuration_hash[:query_cache] end
Source
# File lib/active_record/database_configurations/hash_config.rb, line 47 def replica? configuration_hash[:replica] 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.
Source
# File lib/active_record/database_configurations/hash_config.rb, line 136 def schema_cache_path configuration_hash[:schema_cache_path] 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.
Source
# File 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 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.
Source
# File lib/active_record/database_configurations/hash_config.rb, line 160 def seeds? configuration_hash.fetch(:seeds, primary?) 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.