edge badge

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", @spec_name="primary", @config={database: "db_name"}>

Options

  • :env_name - The Rails environment, i.e. “development”.

  • :spec_name - The specification 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.

Methods
A
C
D
I
M
N
P
R
Class Public methods
new(env_name, spec_name, config)
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 28
def initialize(env_name, spec_name, config)
  super(env_name, spec_name)
  @config = config.symbolize_keys
end
Instance Public methods
adapter()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 79
def adapter
  configuration_hash[:adapter]
end
checkout_timeout()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 64
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end
config()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 33
def config
  ActiveSupport::Deprecation.warn("DatabaseConfig#config will be removed in 6.2.0 in favor of DatabaseConfigurations#configuration_hash which returns a hash with symbol keys")
  configuration_hash.stringify_keys
end
configuration_hash()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 38
def configuration_hash
  @config
end
database()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 56
def database
  configuration_hash[:database]
end
idle_timeout()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 74
def idle_timeout
  timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
  timeout if timeout > 0
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
pool()
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 60
def pool
  (configuration_hash[:pool] || 5).to_i
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 70
def reaping_frequency
  configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end
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.

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 45
def replica?
  configuration_hash[:replica]
end