Class: ActiveRecord::DatabaseConfigurations::HashConfig
- Inherits:
-
DatabaseConfig
- Object
- DatabaseConfig
- ActiveRecord::DatabaseConfigurations::HashConfig
- Defined in:
- activerecord/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
HashConfigobject. - #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_frequencyis configurable mostly for historical reasons, but it could also be useful if someone wants a very lowidle_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.
-
#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 |
# File 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 64 def database configuration_hash[:database] end |
#database_tasks? ⇒ Boolean
:nodoc:
161 162 163 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 161 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 'activerecord/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 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 56 def host configuration_hash[:host] end |
#idle_timeout ⇒ Object
102 103 104 105 |
# File 'activerecord/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 'activerecord/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 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 88 def max_queue max_threads * 4 end |
#max_threads ⇒ Object
80 81 82 |
# File 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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 'activerecord/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.
149 150 151 152 153 154 155 156 157 158 159 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 149 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 |
#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.
137 138 139 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 137 def seeds? configuration_hash.fetch(:seeds, primary?) end |
#socket ⇒ Object
:nodoc:
60 61 62 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 60 def socket # :nodoc: configuration_hash[:socket] end |
#use_metadata_table? ⇒ Boolean
:nodoc:
165 166 167 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 165 def # :nodoc: configuration_hash.fetch(:use_metadata_table, true) end |