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.
- #lazy_schema_cache_path ⇒ Object
- #max_queue ⇒ Object
- #max_threads ⇒ Object
-
#migrations_paths ⇒ Object
The migrations paths for a database configuration.
- #min_threads ⇒ Object
- #pool ⇒ Object
-
#primary? ⇒ Boolean
:nodoc:.
- #query_cache ⇒ Object
-
#reaping_frequency ⇒ Object
‘reaping_frequency` is configurable mostly for historical reasons, but it could also be useful if someone wants a very low `idle_timeout`.
-
#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 = ActiveRecord.schema_format) ⇒ Object
Determines whether to dump the schema/structure files and the filename that should be used.
-
#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 |
# 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 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:
68 69 70 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 68 def _database=(database) # :nodoc: @configuration_hash = configuration_hash.merge(database: database).freeze end |
#adapter ⇒ Object
107 108 109 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 107 def adapter configuration_hash[:adapter]&.to_s end |
#checkout_timeout ⇒ Object
92 93 94 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 92 def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end |
#database ⇒ Object
64 65 66 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 64 def database configuration_hash[:database] end |
#database_tasks? ⇒ Boolean
:nodoc:
153 154 155 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 153 def database_tasks? # :nodoc: !replica? && !!configuration_hash.fetch(:database_tasks, true) end |
#default_schema_cache_path(db_dir = "db") ⇒ Object
117 118 119 120 121 122 123 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 117 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
56 57 58 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 56 def host configuration_hash[:host] end |
#idle_timeout ⇒ Object
102 103 104 105 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 102 def idle_timeout timeout = configuration_hash.fetch(:idle_timeout, 300).to_f timeout if timeout > 0 end |
#lazy_schema_cache_path ⇒ Object
125 126 127 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 125 def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end |
#max_queue ⇒ Object
88 89 90 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 88 def max_queue max_threads * 4 end |
#max_threads ⇒ Object
80 81 82 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 80 def max_threads (configuration_hash[:max_threads] || pool).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.
52 53 54 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 52 def migrations_paths configuration_hash[:migrations_paths] end |
#min_threads ⇒ Object
76 77 78 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 76 def min_threads (configuration_hash[:min_threads] || 0).to_i end |
#pool ⇒ Object
72 73 74 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 72 def pool (configuration_hash[:pool] || 5).to_i end |
#primary? ⇒ Boolean
:nodoc:
129 130 131 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 129 def primary? # :nodoc: Base.configurations.primary?(name) end |
#query_cache ⇒ Object
84 85 86 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 84 def query_cache configuration_hash[:query_cache] end |
#reaping_frequency ⇒ Object
‘reaping_frequency` is configurable mostly for historical reasons, but it could also be useful if someone wants a very low `idle_timeout`.
98 99 100 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 98 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`.
46 47 48 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 46 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.
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` 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.
141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 141 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 |
#socket ⇒ Object
:nodoc:
60 61 62 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 60 def socket # :nodoc: configuration_hash[:socket] end |
#use_metadata_table? ⇒ Boolean
:nodoc:
157 158 159 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 157 def # :nodoc: configuration_hash.fetch(:use_metadata_table, true) end |