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 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
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.
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_hash ⇒ Object (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:
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 |
#adapter ⇒ Object
106 107 108 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 106 def adapter configuration_hash[:adapter] end |
#checkout_timeout ⇒ Object
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 |
#database ⇒ Object
63 64 65 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 63 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
55 56 57 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 55 def host configuration_hash[:host] end |
#idle_timeout ⇒ Object
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_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
87 88 89 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 87 def max_queue max_threads * 4 end |
#max_threads ⇒ Object
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_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.
51 52 53 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 51 def migrations_paths configuration_hash[:migrations_paths] end |
#min_threads ⇒ Object
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 |
#pool ⇒ Object
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:
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
83 84 85 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 83 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
.
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
.
44 45 46 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 44 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[: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.
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:
59 60 61 |
# File 'lib/active_record/database_configurations/hash_config.rb', line 59 def socket # :nodoc: configuration_hash[:socket] end |