Class: ActiveRecord::DatabaseConfigurations::HashConfig
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Inherits: |
ActiveRecord::DatabaseConfigurations::DatabaseConfig
|
Defined in: | activerecord/lib/active_record/database_configurations/hash_config.rb |
Overview
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.
Class Method Summary
-
.new(env_name, name, configuration_hash) ⇒ HashConfig
constructor
Initialize a new
HashConfig
object.
Instance Attribute Summary
- #configuration_hash readonly
-
#replica? ⇒ Boolean
readonly
Determines whether a database configuration is for a replica / readonly connection.
-
#seeds? ⇒ Boolean
readonly
Determines whether the db:prepare task should seed the database from db/seeds.rb.
Instance Method Summary
- #adapter
- #checkout_timeout
- #database
- #default_schema_cache_path(db_dir = "db")
- #host
- #idle_timeout
- #lazy_schema_cache_path
- #max_queue
- #max_threads
-
#migrations_paths
The migrations paths for a database configuration.
- #min_threads
- #pool
- #query_cache
-
#reaping_frequency
#reaping_frequency is configurable mostly for historical reasons, but it could also be useful if someone wants a very low #idle_timeout.
-
#schema_cache_path
The path to the schema cache dump file for a database.
-
#schema_dump(format = ActiveRecord.schema_format)
Determines whether to dump the schema/structure files and the filename that should be used.
Constructor Details
.new(env_name, name, configuration_hash) ⇒ HashConfig
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.
# 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 end
Instance Attribute Details
#configuration_hash (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 23
attr_reader :configuration_hash
#replica? ⇒ Boolean
(readonly)
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 46
def replica? configuration_hash[:replica] end
#seeds? ⇒ Boolean
(readonly)
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 137
def seeds? configuration_hash.fetch(:seeds, primary?) end
Instance Method Details
#adapter
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 107
def adapter configuration_hash[:adapter]&.to_s end
#checkout_timeout
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 92
def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
#database
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 64
def database configuration_hash[:database] end
#default_schema_cache_path(db_dir = "db")
[ GitHub ]#host
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 56
def host configuration_hash[:host] end
#idle_timeout
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 102
def idle_timeout timeout = configuration_hash.fetch(:idle_timeout, 300).to_f timeout if timeout > 0 end
#lazy_schema_cache_path
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 125
def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end
#max_queue
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 88
def max_queue max_threads * 4 end
#max_threads
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 80
def max_threads (configuration_hash[:max_threads] || pool).to_i end
#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.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 52
def migrations_paths configuration_hash[:migrations_paths] end
#min_threads
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 76
def min_threads (configuration_hash[:min_threads] || 0).to_i end
#pool
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 72
def pool (configuration_hash[:pool] || 5).to_i end
#query_cache
[ GitHub ]# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 84
def query_cache configuration_hash[:query_cache] end
#reaping_frequency
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 98
def reaping_frequency configuration_hash.fetch(:reaping_frequency, 60)&.to_f end
#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.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 113
def schema_cache_path configuration_hash[:schema_cache_path] end
#schema_dump(format = ActiveRecord.schema_format)
Determines whether to dump the schema/structure files and the filename that should be used.
If :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 149
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