class ActiveRecord::DatabaseConfigurations::HashConfig

Parent:
ActiveRecord::DatabaseConfigurations::DatabaseConfig

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.

Attributes

configuration_hash[R]

Public Class Methods

new(env_name, name, configuration_hash) Show source
# 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

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.

Calls superclass method

Public Instance Methods

adapter() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 107
def adapter
  configuration_hash[:adapter]&.to_s
end
checkout_timeout() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 92
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end
database() Show source
# 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") Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 117
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() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 56
def host
  configuration_hash[:host]
end
idle_timeout() Show source
# 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() Show source
# 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() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 88
def max_queue
  max_threads * 4
end
max_threads() Show source
# 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() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 52
def migrations_paths
  configuration_hash[:migrations_paths]
end

The migrations paths for a database configuration. If the migrations_paths key is present in the config, migrations_paths will return its value.

min_threads() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 76
def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end
pool() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 72
def pool
  (configuration_hash[:pool] || 5).to_i
end
query_cache() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 84
def query_cache
  configuration_hash[:query_cache]
end
reaping_frequency() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 98
def reaping_frequency
  configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end

reaping_frequency is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout.

replica?() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 46
def replica?
  configuration_hash[:replica]
end

Determines whether a database configuration is for a replica / readonly connection. If the replica key is present in the config, replica? will return true.

schema_cache_path() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 113
def schema_cache_path
  configuration_hash[:schema_cache_path]
end

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.

schema_dump(format = ActiveRecord.schema_format) Show source
# 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

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.

seeds?() Show source
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 137
def seeds?
  configuration_hash.fetch(:seeds, primary?)
end

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.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.