Class: ActiveRecord::DatabaseConfigurations::HashConfig
- Inherits:
-
DatabaseConfig
- Object
- DatabaseConfig
- ActiveRecord::DatabaseConfigurations::HashConfig
- 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
Instance Attribute Summary collapse
-
#configuration_hash ⇒ Object
readonly
Returns the value of attribute configuration_hash.
Attributes inherited from DatabaseConfig
Instance Method Summary collapse
-
#_database=(database) ⇒ Object
:nodoc:.
- #adapter ⇒ Object
- #checkout_timeout ⇒ Object
- #database ⇒ Object
-
#database_tasks? ⇒ Boolean
:nodoc:.
- #default_schema_cache_path(db_dir = "db") ⇒ Object
- #host ⇒ Object
- #idle_timeout ⇒ Object
-
#initialize(env_name, name, configuration_hash) ⇒ HashConfig
constructor
Initialize a new ‘HashConfig` object.
- #keepalive ⇒ Object
- #lazy_schema_cache_path ⇒ Object
- #max_age ⇒ Object
- #max_connections ⇒ Object (also: #pool)
- #max_queue ⇒ Object
- #max_threads ⇒ Object
-
#migrations_paths ⇒ Object
The migrations paths for a database configuration.
- #min_connections ⇒ Object
- #min_threads ⇒ Object
-
#primary? ⇒ Boolean
:nodoc:.
- #query_cache ⇒ Object
-
#reaping_frequency ⇒ Object
:nodoc:.
-
#replica? ⇒ Boolean
Determines whether a database configuration is for a replica / readonly connection.
-
#schema_cache_path ⇒ Object
The path to the schema cache dump file for a database.
-
#schema_dump(format = schema_format) ⇒ Object
Determines whether to dump the schema/structure files and the filename that should be used.
-
#schema_format ⇒ Object
:nodoc:.
-
#seeds? ⇒ Boolean
Determines whether the db:prepare task should seed the database from db/seeds.rb.
-
#socket ⇒ Object
:nodoc:.
-
#use_metadata_table? ⇒ Boolean
:nodoc:.
Methods inherited from DatabaseConfig
#adapter_class, #for_current_env?, #inspect, #new_connection, #validate!
Constructor Details
#initialize(env_name, name, configuration_hash) ⇒ HashConfig
Initialize a new ‘HashConfig` object
#### Parameters
-
‘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”.
-
‘configuration_hash` - The config hash. This is the hash that contains the database adapter, name, and other important information for database connections.
38 39 40 41 42 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 38 def initialize(env_name, name, configuration_hash) super(env_name, name) @configuration_hash = configuration_hash.symbolize_keys.freeze validate_configuration! end |
Instance Attribute Details
#configuration_hash ⇒ Object (readonly)
Returns the value of attribute configuration_hash.
23 24 25 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 23 def configuration_hash @configuration_hash end |
Instance Method Details
#_database=(database) ⇒ Object
:nodoc:
69 70 71 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 69 def _database=(database) # :nodoc: @configuration_hash = configuration_hash.merge(database: database).freeze end |
#adapter ⇒ Object
130 131 132 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 130 def adapter configuration_hash[:adapter]&.to_s end |
#checkout_timeout ⇒ Object
112 113 114 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 112 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end |
#database ⇒ Object
65 66 67 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 65 def database configuration_hash[:database] end |
#database_tasks? ⇒ Boolean
:nodoc:
190 191 192 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 190 def database_tasks? # :nodoc: !replica? && !!configuration_hash.fetch(:database_tasks, true) end |
#default_schema_cache_path(db_dir = "db") ⇒ Object
140 141 142 143 144 145 146 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 140 def default_schema_cache_path(db_dir = "db") if primary? File.join(db_dir, "schema_cache.yml") else File.join(db_dir, "#{name}_schema_cache.yml") end end |
#host ⇒ Object
57 58 59 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 57 def host configuration_hash[:host] end |
#idle_timeout ⇒ Object
120 121 122 123 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 120 def idle_timeout timeout = configuration_hash.fetch(:idle_timeout, 300).to_f timeout if timeout > 0 end |
#keepalive ⇒ Object
125 126 127 128 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 125 def keepalive keepalive = (configuration_hash[:keepalive] || 600).to_f keepalive if keepalive > 0 end |
#lazy_schema_cache_path ⇒ Object
148 149 150 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 148 def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end |
#max_age ⇒ Object
95 96 97 98 99 100 101 102 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 95 def max_age v = configuration_hash[:max_age]&.to_i if v && v > 0 v else Float::INFINITY end end |
#max_connections ⇒ Object Also known as: pool
73 74 75 76 77 78 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 73 def max_connections max_connections = configuration_hash.fetch(:max_connections) { configuration_hash.fetch(:pool, 5) }&.to_i max_connections if max_connections && max_connections >= 0 end |
#max_queue ⇒ Object
108 109 110 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 108 def max_queue max_threads * 4 end |
#max_threads ⇒ Object
91 92 93 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 91 def max_threads (configuration_hash[:max_threads] || (max_connections || 5).clamp(0, 5)).to_i end |
#migrations_paths ⇒ Object
The migrations paths for a database configuration. If the ‘migrations_paths` key is present in the config, `migrations_paths` will return its value.
53 54 55 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 53 def migrations_paths configuration_hash[:migrations_paths] end |
#min_connections ⇒ Object
80 81 82 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 80 def min_connections (configuration_hash[:min_connections] || 0).to_i end |
#min_threads ⇒ Object
87 88 89 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 87 def min_threads (configuration_hash[:min_threads] || 0).to_i end |
#primary? ⇒ Boolean
:nodoc:
152 153 154 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 152 def primary? # :nodoc: Base.configurations.primary?(name) end |
#query_cache ⇒ Object
104 105 106 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 104 def query_cache configuration_hash[:query_cache] end |
#reaping_frequency ⇒ Object
:nodoc:
116 117 118 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 116 def reaping_frequency # :nodoc: configuration_hash.fetch(:reaping_frequency, default_reaping_frequency)&.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`.
47 48 49 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 47 def replica? configuration_hash[:replica] end |
#schema_cache_path ⇒ Object
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.
136 137 138 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 136 def schema_cache_path configuration_hash[:schema_cache_path] end |
#schema_dump(format = schema_format) ⇒ Object
Determines whether to dump the schema/structure files and the filename that should be used.
If ‘configuration_hash` 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.
172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 172 def schema_dump(format = 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 |
#schema_format ⇒ Object
:nodoc:
184 185 186 187 188 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 184 def schema_format # :nodoc: format = configuration_hash.fetch(:schema_format, ActiveRecord.schema_format).to_sym raise "Invalid schema format" unless [:ruby, :sql].include?(format) format end |
#seeds? ⇒ Boolean
Determines whether the db:prepare task should seed the database from db/seeds.rb.
If the ‘seeds` key is present in the config, `seeds?` will return its value. Otherwise, it will return `true` for the primary database and `false` for all other configs.
160 161 162 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 160 def seeds? configuration_hash.fetch(:seeds, primary?) end |
#socket ⇒ Object
:nodoc:
61 62 63 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 61 def socket # :nodoc: configuration_hash[:socket] end |
#use_metadata_table? ⇒ Boolean
:nodoc:
194 195 196 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 194 def # :nodoc: configuration_hash.fetch(:use_metadata_table, true) end |