123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::DatabaseConfigurations::HashConfig

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: ActiveRecord::DatabaseConfigurations::DatabaseConfig
  • ::Object
Defined in: activerecord/lib/active_record/database_configurations/hash_config.rb

Overview

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"}>

Options

  • :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”.

  • :config - The config hash. This is the hash that contains the database adapter, name, and other important information for database connections.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(env_name, name, configuration_hash) ⇒ HashConfig

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 29

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 28

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.

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 42

def replica?
  configuration_hash[:replica]
end

Instance Method Details

#adapter

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 84

def adapter
  configuration_hash[:adapter]
end

#checkout_timeout

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 69

def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end

#config

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 34

def config
  ActiveSupport::Deprecation.warn("DatabaseConfig#config will be removed in 7.0.0 in favor of DatabaseConfig#configuration_hash which returns a hash with symbol keys")
  configuration_hash.stringify_keys
end

#database

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 57

def database
  configuration_hash[:database]
end

#host

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 53

def host
  configuration_hash[:host]
end

#idle_timeout

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 79

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.

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 49

def migrations_paths
  configuration_hash[:migrations_paths]
end

#pool

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 65

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.

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 75

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.

[ GitHub ]

  
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 91

def schema_cache_path
  configuration_hash[:schema_cache_path]
end