class ActiveRecord::DatabaseConfigurations::HashConfig
See ActiveRecord::DatabaseConfigurations for more info.
@env_name=“development”, @name=“primary”, @config={database: “db_name”}>
#<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fd1acbded10
Becomes:
{ “development” => { “database” => “db_name” } }
A hash config:
is created from a hash.
A HashConfig
object is created for each database configuration entry that
= Active Record Database Hash Config
def _database=(database) # :nodoc:
def _database=(database) # :nodoc: @configuration_hash = configuration_hash.merge(database: database).freeze end
def adapter
def adapter configuration_hash[:adapter] end
def checkout_timeout
def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
def database
def database configuration_hash[:database] end
def database_tasks? # :nodoc:
def database_tasks? # :nodoc: !replica? && !!configuration_hash.fetch(:database_tasks, true) end
def default_schema_cache_path(db_dir = "db")
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
def host
def host configuration_hash[:host] end
def idle_timeout
def idle_timeout timeout = configuration_hash.fetch(:idle_timeout, 300).to_f timeout if timeout > 0 end
def initialize(env_name, name, configuration_hash)
database adapter, name, and other important information for database
* :config - The config hash. This is the hash that contains the
used in the second tier, for example "primary_readonly".
database three-tier database configuration this corresponds to the name
database configuration this will default to "primary". In a multiple
* :name - The db config name. In a standard two-tier
* :env_name - The \Rails environment, i.e. "development".
==== Options
Initialize a new +HashConfig+ object
def initialize(env_name, name, configuration_hash) super(env_name, name) @configuration_hash = configuration_hash.symbolize_keys.freeze end
def lazy_schema_cache_path
def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end
def max_queue
def max_queue max_threads * 4 end
def max_threads
def max_threads (configuration_hash[:max_threads] || pool).to_i end
def migrations_paths
+migrations_paths+ key is present in the config, +migrations_paths+
The migrations paths for a database configuration. If the
def migrations_paths configuration_hash[:migrations_paths] end
def min_threads
def min_threads (configuration_hash[:min_threads] || 0).to_i end
def pool
def pool (configuration_hash[:pool] || 5).to_i end
def primary? # :nodoc:
def primary? # :nodoc: Base.configurations.primary?(name) end
def query_cache
def query_cache configuration_hash[:query_cache] end
def reaping_frequency
+reaping_frequency+ is configurable mostly for historical reasons, but it could
def reaping_frequency configuration_hash.fetch(:reaping_frequency, 60)&.to_f end
def replica?
connection. If the +replica+ key is present in the config, +replica?+ will
Determines whether a database configuration is for a replica / readonly
def replica? configuration_hash[:replica] end
def schema_cache_path
If omitted, the filename will be read from ENV or a
The path to the schema cache dump file for a database.
def schema_cache_path configuration_hash[:schema_cache_path] end
def schema_dump(format = ActiveRecord.schema_format)
If the config option is set that will be used. Otherwise \Rails
the schema will not be dumped.
If +configuration_hash[:schema_dump]+ is set to +false+ or +nil+
filename that should be used.
Determines whether to dump the schema/structure files and the
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
def schema_file_type(format)
def schema_file_type(format) case format when :ruby "schema.rb" when :sql "structure.sql" end end
def socket # :nodoc:
def socket # :nodoc: configuration_hash[:socket] end