Skip to Content Skip to Search

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
A
C
D
H
I
K
L
M
N
P
Q
R
S

Attributes

[R] configuration_hash

Class Public methods

new(env_name, name, configuration_hash)

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
  validate_configuration!
end

Instance Public methods

adapter()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 127
def adapter
  configuration_hash[:adapter]&.to_s
end

checkout_timeout()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 109
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end

database()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 65
def database
  configuration_hash[:database]
end

default_schema_cache_path(db_dir = "db")

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 137
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

host()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 57
def host
  configuration_hash[:host]
end

idle_timeout()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 117
def idle_timeout
  timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
  timeout if timeout > 0
end

keepalive()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 122
def keepalive
  keepalive = (configuration_hash[:keepalive] || 600).to_f
  keepalive if keepalive > 0
end

lazy_schema_cache_path()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 145
def lazy_schema_cache_path
  schema_cache_path || default_schema_cache_path
end

max_age()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 92
def max_age
  v = configuration_hash[:max_age]&.to_i
  if v && v > 0
    v
  else
    Float::INFINITY
  end
end

max_connections()

Also aliased as: pool
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 73
def max_connections
  (configuration_hash[:max_connections] || configuration_hash[:pool] || 5).to_i
end

max_queue()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 105
def max_queue
  max_threads * 4
end

max_threads()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 88
def max_threads
  (configuration_hash[:max_threads] || max_connections).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 53
def migrations_paths
  configuration_hash[:migrations_paths]
end

min_connections()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 77
def min_connections
  (configuration_hash[:min_connections] || 0).to_i
end

min_threads()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 84
def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end

pool()

Alias for: max_connections

query_cache()

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 101
def query_cache
  configuration_hash[:query_cache]
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 47
def replica?
  configuration_hash[:replica]
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 133
def schema_cache_path
  configuration_hash[:schema_cache_path]
end

schema_dump(format = 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.

# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 169
def schema_dump(format = 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

seeds?()

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 157
def seeds?
  configuration_hash.fetch(:seeds, primary?)
end