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?

Constructor Details

#initialize(env_name, name, configuration_hash) ⇒ HashConfig

Returns a new instance of HashConfig.


30
31
32
33
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 30

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


96
97
98
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 96

def adapter
  configuration_hash[:adapter]
end

#checkout_timeoutObject


81
82
83
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 81

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

#databaseObject


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

def database
  configuration_hash[:database]
end

#database_tasks?Boolean

:nodoc:

Returns:

  • (Boolean)

139
140
141
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 139

def database_tasks? # :nodoc:
  !replica? && !!configuration_hash.fetch(:database_tasks, true)
end

#default_schema_cache_pathObject


107
108
109
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 107

def default_schema_cache_path
  "db/schema_cache.yml"
end

#hostObject


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

def host
  configuration_hash[:host]
end

#idle_timeoutObject


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

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

#lazy_schema_cache_pathObject


111
112
113
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 111

def lazy_schema_cache_path
  schema_cache_path || default_schema_cache_path
end

#max_queueObject


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

def max_queue
  max_threads * 4
end

#max_threadsObject


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

def max_threads
  (configuration_hash[:max_threads] || pool).to_i
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.


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

def migrations_paths
  configuration_hash[:migrations_paths]
end

#min_threadsObject


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

def min_threads
  (configuration_hash[:min_threads] || 0).to_i
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

#primary?Boolean

:nodoc:

Returns:

  • (Boolean)

115
116
117
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 115

def primary? # :nodoc:
  Base.configurations.primary?(name)
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.


87
88
89
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 87

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)

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

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.


103
104
105
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 103

def schema_cache_path
  configuration_hash[:schema_cache_path]
end

#schema_dump(format = ActiveRecord.schema_format) ⇒ Object

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.


127
128
129
130
131
132
133
134
135
136
137
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 127

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

#socketObject

:nodoc:


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

def socket # :nodoc:
  configuration_hash[:socket]
end