#primary? ⇒ Boolean (readonly)
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 195
def primary? # :nodoc: Base.configurations.primary?(name) end
123456789_123456789_123456789_123456789_123456789_
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
DatabaseConfig
|
|
|
Instance Chain:
self,
DatabaseConfig
|
|
| Inherits: |
ActiveRecord::DatabaseConfigurations::DatabaseConfig
|
| Defined in: | activerecord/lib/active_record/database_configurations/hash_config.rb |
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.
Initialize a new HashConfig object.
DatabaseConfig - InheritedDetermines whether a database configuration is for a replica / readonly connection.
Determines whether the db:prepare task should seed the database from db/seeds.rb.
DatabaseConfig - InheritedAlias for #==.
The migrations paths for a database configuration.
use max_connections instead
The path to the schema cache dump file for a database.
Determines whether to dump the schema/structure files and the filename that should be used.
DatabaseConfig - InheritedHashConfig
Initialize a new HashConfig object
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".# 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 validate_configuration! = @configuration_hash[:] @query_log_tags_format = (["format"]&.to_sym if .is_a?(Hash)) @query_log_tags_prepend_comment = (["prepend_comment"] if .is_a?(Hash)) end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 85
def _database=(database) # :nodoc: @configuration_hash = configuration_hash.merge(database: database).freeze end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 23
attr_reader :configuration_hash
Boolean (readonly)
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 233
def database_tasks? # :nodoc: !replica? && !!configuration_hash.fetch(:database_tasks, true) end
Boolean (readonly)
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 241
def dump_schema_migrations? # :nodoc: configuration_hash.fetch(:dump_schema_migrations, ActiveRecord.dump_schema_migrations) end
Boolean (readonly)
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 195
def primary? # :nodoc: Base.configurations.primary?(name) end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 129
attr_reader :, : # :nodoc:
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 129
attr_reader :, : # :nodoc:
Boolean (readonly)
Determines whether a database configuration is for a replica / readonly
connection. If the replica key is present in the config, replica? will
return true.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 63
def replica? configuration_hash[:replica] end
Boolean (readonly)
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.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 203
def seeds? configuration_hash.fetch(:seeds, primary?) end
Boolean (readonly)
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 237
def # :nodoc: configuration_hash.fetch(:, true) end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 47
def ==(other) other.is_a?(DatabaseConfig) && comparable_values == other.comparable_values end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 173
def adapter configuration_hash[:adapter]&.to_s end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 135
def checkout_timeout (configuration_hash[:checkout_timeout] || 5).to_f end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 56
def comparable_values # :nodoc: super << configuration_hash end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 81
def database configuration_hash[:database] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 255
def default_reaping_frequency # Reap every 20 seconds by default, but run more often as necessary to # meet other configured timeouts. [20, idle_timeout, max_age, keepalive].compact.min end
Alias for #==.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 50
alias :eql? :==
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 52
def hash # :nodoc: comparable_values.hash end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 73
def host configuration_hash[:host] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 148
def idle_timeout default = 300 case timeout = configuration_hash.fetch(:idle_timeout, default) when nil, false nil when true default.to_f else timeout = timeout.to_f timeout if timeout > 0 end end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 161
def keepalive case keepalive = configuration_hash[:keepalive] when false nil when nil, true 600.0 # default else keepalive = keepalive.to_f keepalive if keepalive > 0.0 end end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 191
def lazy_schema_cache_path schema_cache_path || default_schema_cache_path end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 111
def max_age case v = configuration_hash[:max_age] when nil, false Float::INFINITY else v = v.to_i v > 0 ? v : Float::INFINITY end end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 89
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
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 131
def max_queue max_threads * 4 end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 107
def max_threads (configuration_hash[:max_threads] || (max_connections || 5).clamp(0, 5)).to_i end
The migrations paths for a database configuration. If the migrations_paths
key is present in the config, migrations_paths will return its value.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 69
def migrations_paths configuration_hash[:migrations_paths] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 96
def min_connections (configuration_hash[:min_connections] || 0).to_i end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 103
def min_threads (configuration_hash[:min_threads] || 0).to_i end
use max_connections instead
Alias for #max_connections.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 100
alias :pool :max_connections
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 121
def query_cache configuration_hash[:query_cache] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 125
def # :nodoc: configuration_hash[:] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 139
def reaping_frequency # :nodoc: case frequency = configuration_hash.fetch(:reaping_frequency, default_reaping_frequency) when nil, false nil else frequency.to_f end end
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.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 179
def schema_cache_path configuration_hash[:schema_cache_path] end
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.
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 215
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
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 246
def schema_file_type(format) case format.to_sym when :ruby "schema.rb" when :sql "structure.sql" end end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 227
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
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 77
def socket # :nodoc: configuration_hash[:socket] end
# File 'activerecord/lib/active_record/database_configurations/hash_config.rb', line 261
def validate_configuration! if configuration_hash[:pool] && configuration_hash[:max_connections] pool_val = configuration_hash[:pool].to_i max_conn_val = configuration_hash[:max_connections].to_i if pool_val != max_conn_val raise "Ambiguous configuration: 'pool' (#{pool_val}) and 'max_connections' (#{max_conn_val}) are set to different values. Prefer just 'max_connections'." end end if configuration_hash[:pool] && configuration_hash[:min_connections] raise "Ambiguous configuration: when setting 'min_connections', use 'max_connections' instead of 'pool'." end end