On this page
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 activerecord/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 activerecord/lib/active_record/database_configurations/hash_config.rb, line 96
def adapter
configuration_hash[:adapter]
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 81
def checkout_timeout
(configuration_hash[:checkout_timeout] || 5).to_f
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 57
def database
configuration_hash[:database]
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 107
def default_schema_cache_path
"db/schema_cache.yml"
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 49
def host
configuration_hash[:host]
end
# File activerecord/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 activerecord/lib/active_record/database_configurations/hash_config.rb, line 111
def lazy_schema_cache_path
schema_cache_path || default_schema_cache_path
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 77
def max_queue
max_threads * 4
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 73
def max_threads
(configuration_hash[:max_threads] || pool).to_i
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 45
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.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 69
def min_threads
(configuration_hash[:min_threads] || 0).to_i
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 65
def pool
(configuration_hash[:pool] || 5).to_i
end
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 87
def reaping_frequency
configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end
reaping_frequency
is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout
.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 38
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
.
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 103
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.
# File activerecord/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
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.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.