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.
Methods
- adapter
- checkout_timeout
- database
- default_schema_cache_path
- host
- idle_timeout
- lazy_schema_cache_path
- max_queue
- max_threads
- migrations_paths
- min_threads
- new
- pool
- query_cache
- reaping_frequency
- replica?
- schema_cache_path
- schema_dump
Attributes
[R] | configuration_hash |
Class Public methods
new(env_name, name, configuration_hash)
Initialize a new HashConfig
object
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.
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 36
def initialize(env_name, name, configuration_hash)
super(env_name, name)
@configuration_hash = configuration_hash.symbolize_keys.freeze
end
🔎 See on GitHub
Instance Public methods
adapter()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 106
def adapter
configuration_hash[:adapter]
end
🔎 See on GitHub
checkout_timeout()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 91
def checkout_timeout
(configuration_hash[:checkout_timeout] || 5).to_f
end
🔎 See on GitHub
database()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 63
def database
configuration_hash[:database]
end
🔎 See on GitHub
default_schema_cache_path()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 117
def default_schema_cache_path
"db/schema_cache.yml"
end
🔎 See on GitHub
host()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 55
def host
configuration_hash[:host]
end
🔎 See on GitHub
idle_timeout()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 101
def idle_timeout
timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
timeout if timeout > 0
end
🔎 See on GitHub
lazy_schema_cache_path()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 121
def lazy_schema_cache_path
schema_cache_path || default_schema_cache_path
end
🔎 See on GitHub
max_queue()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 87
def max_queue
max_threads * 4
end
🔎 See on GitHub
max_threads()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 79
def max_threads
(configuration_hash[:max_threads] || pool).to_i
end
🔎 See on GitHub
migrations_paths()
The migrations paths for a database configuration. If the migrations_paths
key is present in the config, migrations_paths
will return its value.
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 51
def migrations_paths
configuration_hash[:migrations_paths]
end
🔎 See on GitHub
min_threads()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 75
def min_threads
(configuration_hash[:min_threads] || 0).to_i
end
🔎 See on GitHub
pool()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 71
def pool
(configuration_hash[:pool] || 5).to_i
end
🔎 See on GitHub
query_cache()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 83
def query_cache
configuration_hash[:query_cache]
end
🔎 See on GitHub
reaping_frequency()
reaping_frequency
is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout
.
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 97
def reaping_frequency
configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end
🔎 See on GitHub
replica?()
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 code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 44
def replica?
configuration_hash[:replica]
end
🔎 See on GitHub
schema_cache_path()
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 code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 113
def schema_cache_path
configuration_hash[:schema_cache_path]
end
🔎 See on GitHub
schema_dump(format = ActiveRecord.schema_format)
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 code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 137
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
🔎 See on GitHub