Class: ActiveRecord::DatabaseConfigurations::HashConfig

Inherits:
DatabaseConfig
  • Object
show all
Defined in:
lib/active_record/database_configurations/hash_config.rb

Overview

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.

Direct Known Subclasses

UrlConfig

Instance Attribute Summary collapse

Attributes inherited from DatabaseConfig

#env_name, #name

Instance Method Summary collapse

Methods inherited from DatabaseConfig

#adapter_class_method, #adapter_method, #for_current_env?

Constructor Details

#initialize(env_name, name, configuration_hash) ⇒ HashConfig

Initialize a new HashConfig object

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.

[View source]

36
37
38
39
# File 'lib/active_record/database_configurations/hash_config.rb', line 36

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.


21
22
23
# File 'lib/active_record/database_configurations/hash_config.rb', line 21

def configuration_hash
  @configuration_hash
end

Instance Method Details

#_database=(database) ⇒ Object

:nodoc:

[View source]

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

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

#adapterObject

[View source]

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

def adapter
  configuration_hash[:adapter]
end

#checkout_timeoutObject

[View source]

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

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

#databaseObject

[View source]

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

def database
  configuration_hash[:database]
end

#database_tasks?Boolean

:nodoc:

Returns:

  • (Boolean)
[View source]

149
150
151
# File 'lib/active_record/database_configurations/hash_config.rb', line 149

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

#default_schema_cache_pathObject

[View source]

117
118
119
# File 'lib/active_record/database_configurations/hash_config.rb', line 117

def default_schema_cache_path
  "db/schema_cache.yml"
end

#hostObject

[View source]

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

def host
  configuration_hash[:host]
end

#idle_timeoutObject

[View source]

101
102
103
104
# File 'lib/active_record/database_configurations/hash_config.rb', line 101

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

#lazy_schema_cache_pathObject

[View source]

121
122
123
# File 'lib/active_record/database_configurations/hash_config.rb', line 121

def lazy_schema_cache_path
  schema_cache_path || default_schema_cache_path
end

#max_queueObject

[View source]

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

def max_queue
  max_threads * 4
end

#max_threadsObject

[View source]

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

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.

[View source]

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

def migrations_paths
  configuration_hash[:migrations_paths]
end

#min_threadsObject

[View source]

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

def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end

#poolObject

[View source]

71
72
73
# File 'lib/active_record/database_configurations/hash_config.rb', line 71

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

#primary?Boolean

:nodoc:

Returns:

  • (Boolean)
[View source]

125
126
127
# File 'lib/active_record/database_configurations/hash_config.rb', line 125

def primary? # :nodoc:
  Base.configurations.primary?(name)
end

#query_cacheObject

[View source]

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

def query_cache
  configuration_hash[:query_cache]
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.

[View source]

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

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)
[View source]

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

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.

[View source]

113
114
115
# File 'lib/active_record/database_configurations/hash_config.rb', line 113

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.

[View source]

137
138
139
140
141
142
143
144
145
146
147
# File 'lib/active_record/database_configurations/hash_config.rb', line 137

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:

[View source]

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

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