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", @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.

Direct Known Subclasses

UrlConfig

Instance Attribute Summary collapse

Attributes inherited from DatabaseConfig

#env_name, #name, #owner_name

Instance Method Summary collapse

Methods inherited from DatabaseConfig

#adapter_method, #for_current_env?, #spec_name

Constructor Details

#initialize(env_name, name, configuration_hash) ⇒ HashConfig

Returns a new instance of HashConfig.


29
30
31
32
# 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_hashObject (readonly)

Returns the value of attribute configuration_hash


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

def configuration_hash
  @configuration_hash
end

Instance Method Details

#_database=(database) ⇒ Object

:nodoc:


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

def _database=(database) # :nodoc:
  @configuration_hash = configuration_hash.merge(database: database).freeze
end

#adapterObject


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

def adapter
  configuration_hash[:adapter]
end

#checkout_timeoutObject


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

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

#configObject


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

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

#databaseObject


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

def database
  configuration_hash[:database]
end

#hostObject


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

def host
  configuration_hash[:host]
end

#idle_timeoutObject


79
80
81
82
# 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_pathsObject

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


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

def migrations_paths
  configuration_hash[:migrations_paths]
end

#poolObject


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

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.


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

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)

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

def replica?
  configuration_hash[:replica]
end

#schema_cache_pathObject

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.


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

def schema_cache_path
  configuration_hash[:schema_cache_path]
end