Class: ActiveRecord::DatabaseConfigurations::HashConfig
- Inherits:
-
DatabaseConfig
- Object
- DatabaseConfig
- ActiveRecord::DatabaseConfigurations::HashConfig
- 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
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 ⇒ Object
- #host ⇒ Object
- #idle_timeout ⇒ Object
-
#initialize(env_name, name, configuration_hash) ⇒ HashConfig
constructor
A new instance of HashConfig.
- #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:.
-
#reaping_frequency ⇒ Object
reaping_frequency
is 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.
-
#socket ⇒ Object
:nodoc:.
Methods inherited from DatabaseConfig
#adapter_class_method, #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_hash ⇒ Object (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 |
#adapter ⇒ Object
96 97 98 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 96 def adapter configuration_hash[:adapter] end |
#checkout_timeout ⇒ Object
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 |
#database ⇒ Object
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:
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_path ⇒ Object
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 |
#host ⇒ Object
49 50 51 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 49 def host configuration_hash[:host] end |
#idle_timeout ⇒ Object
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_path ⇒ Object
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_queue ⇒ Object
77 78 79 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 77 def max_queue max_threads * 4 end |
#max_threads ⇒ Object
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_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.
45 46 47 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 45 def migrations_paths configuration_hash[:migrations_paths] end |
#min_threads ⇒ Object
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 |
#pool ⇒ Object
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:
115 116 117 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 115 def primary? # :nodoc: Base.configurations.primary?(name) 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
.
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
.
38 39 40 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 38 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.
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 |
#socket ⇒ Object
:nodoc:
53 54 55 |
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 53 def socket # :nodoc: configuration_hash[:socket] end |