class ActiveRecord::DatabaseConfigurations::HashConfig
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"}>
Options¶ ↑
-
: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”. -
:config
- The config hash. This is the hash that contains the database adapter, name, and other important information for database connections.
Attributes
Public Class Methods
# File lib/active_record/database_configurations/hash_config.rb, line 30 def initialize(env_name, name, configuration_hash) super(env_name, name) @configuration_hash = configuration_hash.symbolize_keys.freeze end
Public Instance Methods
# File lib/active_record/database_configurations/hash_config.rb, line 96 def adapter configuration_hash[:adapter] end
# File lib/active_record/database_configurations/hash_config.rb, line 81 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
# File lib/active_record/database_configurations/hash_config.rb, line 57 def database configuration_hash[:database] end
# File lib/active_record/database_configurations/hash_config.rb, line 107 def default_schema_cache_path "db/schema_cache.yml" end
# File lib/active_record/database_configurations/hash_config.rb, line 49 def host configuration_hash[:host] end
# File lib/active_record/database_configurations/hash_config.rb, line 91 def idle_timeout timeout = configuration_hash.fetch(:idle_timeout, 300).to_f timeout if timeout > 0 end
# File lib/active_record/database_configurations/hash_config.rb, line 111 def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end
# File lib/active_record/database_configurations/hash_config.rb, line 77 def max_queue max_threads * 4 end
# File lib/active_record/database_configurations/hash_config.rb, line 73 def max_threads (configuration_hash[:max_threads] || pool).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 lib/active_record/database_configurations/hash_config.rb, line 45 def migrations_paths configuration_hash[:migrations_paths] end
# File lib/active_record/database_configurations/hash_config.rb, line 69 def min_threads (configuration_hash[:min_threads] || 0).to_i end
# File lib/active_record/database_configurations/hash_config.rb, line 65 def pool (configuration_hash[:pool] || 5).to_i end
reaping_frequency
is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout
.
# File lib/active_record/database_configurations/hash_config.rb, line 87 def reaping_frequency configuration_hash.fetch(:reaping_frequency, 60)&.to_f 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 lib/active_record/database_configurations/hash_config.rb, line 38 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 lib/active_record/database_configurations/hash_config.rb, line 103 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 lib/active_record/database_configurations/hash_config.rb, line 127 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
Private Instance Methods
# File lib/active_record/database_configurations/hash_config.rb, line 144 def schema_file_type(format) case format when :ruby "schema.rb" when :sql "structure.sql" end end