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.

Methods

Attributes

[R] configuration_hash

Class Public methods

new(env_name, name, configuration_hash)

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.

📝 Source code
# 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!
      end
🔎 See on GitHub

Instance Public methods

adapter()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 127
      def adapter
        configuration_hash[:adapter]&.to_s
      end
🔎 See on GitHub

checkout_timeout()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 109
      def checkout_timeout
        (configuration_hash[:checkout_timeout] || 5).to_f
      end
🔎 See on GitHub

database()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 65
      def database
        configuration_hash[:database]
      end
🔎 See on GitHub

default_schema_cache_path(db_dir = "db")

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 137
      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
🔎 See on GitHub

host()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 57
      def host
        configuration_hash[:host]
      end
🔎 See on GitHub

idle_timeout()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 117
      def idle_timeout
        timeout = configuration_hash.fetch(:idle_timeout, 300).to_f
        timeout if timeout > 0
      end
🔎 See on GitHub

keepalive()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 122
      def keepalive
        keepalive = (configuration_hash[:keepalive] || 600).to_f
        keepalive if keepalive > 0
      end
🔎 See on GitHub

lazy_schema_cache_path()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 145
      def lazy_schema_cache_path
        schema_cache_path || default_schema_cache_path
      end
🔎 See on GitHub

max_age()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 92
      def max_age
        v = configuration_hash[:max_age]&.to_i
        if v && v > 0
          v
        else
          Float::INFINITY
        end
      end
🔎 See on GitHub

max_connections()

Also aliased as: pool
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 73
      def max_connections
        (configuration_hash[:max_connections] || configuration_hash[:pool] || 5).to_i
      end
🔎 See on GitHub

max_queue()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 105
      def max_queue
        max_threads * 4
      end
🔎 See on GitHub

max_threads()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 88
      def max_threads
        (configuration_hash[:max_threads] || max_connections).to_i
      end
🔎 See on GitHub

migrations_paths()

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

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 53
      def migrations_paths
        configuration_hash[:migrations_paths]
      end
🔎 See on GitHub

min_connections()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 77
      def min_connections
        (configuration_hash[:min_connections] || 0).to_i
      end
🔎 See on GitHub

min_threads()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 84
      def min_threads
        (configuration_hash[:min_threads] || 0).to_i
      end
🔎 See on GitHub

pool()

Alias for: max_connections

query_cache()

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 101
      def query_cache
        configuration_hash[:query_cache]
      end
🔎 See on GitHub

replica?()

Determines whether a database configuration is for a replica / readonly connection. If the replica key is present in the config, replica? will return true.

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 47
      def replica?
        configuration_hash[:replica]
      end
🔎 See on GitHub

schema_cache_path()

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.

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 133
      def schema_cache_path
        configuration_hash[:schema_cache_path]
      end
🔎 See on GitHub

schema_dump(format = schema_format)

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.

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 169
      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
🔎 See on GitHub

seeds?()

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.

📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 157
      def seeds?
        configuration_hash.fetch(:seeds, primary?)
      end
🔎 See on GitHub