class ActiveRecord::DatabaseConfigurations::HashConfig

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

Attributes

configuration_hash[R]

Public Class Methods

new(env_name, name, configuration_hash) click to toggle source
Calls superclass method
# File 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

Public Instance Methods

adapter() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 96
def adapter
  configuration_hash[:adapter]
end
checkout_timeout() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 81
def checkout_timeout
  (configuration_hash[:checkout_timeout] || 5).to_f
end
database() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 57
def database
  configuration_hash[:database]
end
default_schema_cache_path() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 107
def default_schema_cache_path
  "db/schema_cache.yml"
end
host() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 49
def host
  configuration_hash[:host]
end
idle_timeout() click to toggle source
# File 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() click to toggle source
# File 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() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 77
def max_queue
  max_threads * 4
end
max_threads() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 73
def max_threads
  (configuration_hash[:max_threads] || pool).to_i
end
migrations_paths() click to toggle source

The migrations paths for a database configuration. If the migrations_paths key is present in the config, migrations_paths will return its value.

# File lib/active_record/database_configurations/hash_config.rb, line 45
def migrations_paths
  configuration_hash[:migrations_paths]
end
min_threads() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 69
def min_threads
  (configuration_hash[:min_threads] || 0).to_i
end
pool() click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 65
def pool
  (configuration_hash[:pool] || 5).to_i
end
reaping_frequency() click to toggle source

reaping_frequency is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout.

# File lib/active_record/database_configurations/hash_config.rb, line 87
def reaping_frequency
  configuration_hash.fetch(:reaping_frequency, 60)&.to_f
end
replica?() click to toggle source

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 lib/active_record/database_configurations/hash_config.rb, line 38
def replica?
  configuration_hash[:replica]
end
schema_cache_path() click to toggle source

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 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) click to toggle source

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 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

Private Instance Methods

schema_file_type(format) click to toggle source
# File lib/active_record/database_configurations/hash_config.rb, line 144
def schema_file_type(format)
  case format
  when :ruby
    "schema.rb"
  when :sql
    "structure.sql"
  end
end