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
- adapter
- checkout_timeout
- database
- default_schema_cache_path
- host
- idle_timeout
- lazy_schema_cache_path
- max_queue
- max_threads
- migrations_paths
- min_threads
- new
- pool
- query_cache
- reaping_frequency
- replica?
- schema_cache_path
- schema_dump
Attributes
| [R] | configuration_hash | 
Class Public methods
new(env_name, name, configuration_hash)
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.
📝 Source code
# File activerecord/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
      endInstance Public methods
adapter()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 106
      def adapter
        configuration_hash[:adapter]
      endcheckout_timeout()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 91
      def checkout_timeout
        (configuration_hash[:checkout_timeout] || 5).to_f
      enddatabase()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 63
      def database
        configuration_hash[:database]
      enddefault_schema_cache_path(db_dir = "db")
📝 Source code
# File activerecord/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
      endhost()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 55
      def host
        configuration_hash[:host]
      endidle_timeout()
📝 Source code
# File activerecord/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
      endlazy_schema_cache_path()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 125
      def lazy_schema_cache_path
        schema_cache_path || default_schema_cache_path
      endmax_queue()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 87
      def max_queue
        max_threads * 4
      endmax_threads()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 79
      def max_threads
        (configuration_hash[:max_threads] || pool).to_i
      endmigrations_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 51
      def migrations_paths
        configuration_hash[:migrations_paths]
      endmin_threads()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 75
      def min_threads
        (configuration_hash[:min_threads] || 0).to_i
      endpool()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 71
      def pool
        (configuration_hash[:pool] || 5).to_i
      endquery_cache()
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 83
      def query_cache
        configuration_hash[:query_cache]
      endreaping_frequency()
reaping_frequency is configurable mostly for historical reasons, but it could also be useful if someone wants a very low idle_timeout.
📝 Source code
# File activerecord/lib/active_record/database_configurations/hash_config.rb, line 97
      def reaping_frequency
        configuration_hash.fetch(:reaping_frequency, 60)&.to_f
      endreplica?()
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 44
      def replica?
        configuration_hash[:replica]
      endschema_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 113
      def schema_cache_path
        configuration_hash[:schema_cache_path]
      endschema_dump(format = ActiveRecord.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 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