Class: ActiveRecord::DatabaseConfigurations::HashConfig

Inherits:
DatabaseConfig show all
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", @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.

Direct Known Subclasses

UrlConfig

Instance Attribute Summary

Attributes inherited from DatabaseConfig

#env_name, #owner_name, #spec_name

Instance Method Summary collapse

Methods inherited from DatabaseConfig

#adapter_method, #for_current_env?

Constructor Details

#initialize(env_name, spec_name, config) ⇒ HashConfig

Returns a new instance of HashConfig.



28
29
30
31
# 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 Method Details

#adapterObject



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

def adapter
  configuration_hash[:adapter]
end

#checkout_timeoutObject



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

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

#configObject



33
34
35
36
# 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_hashObject



38
39
40
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 38

def configuration_hash
  @config.freeze
end

#databaseObject



60
61
62
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 60

def database
  configuration_hash[:database]
end

#hostObject



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

def host
  configuration_hash[:host]
end

#idle_timeoutObject



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

def idle_timeout
  timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
  timeout if timeout > 0
end

#migrations_pathsObject

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



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

def migrations_paths
  configuration_hash[:migrations_paths]
end

#poolObject



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

def pool
  (configuration_hash[:pool] || 5).to_i
end

#reaping_frequencyObject

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



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

def reaping_frequency
  configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end

#replica?Boolean

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

Returns:

  • (Boolean)


45
46
47
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 45

def replica?
  configuration_hash[:replica]
end