Methods

Constants

DEFAULT_ENV = -> { RAILS_ENV.call || "default_env" }
RAILS_ENV = -> { (Rails.env if defined?(Rails.env)) || ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence }

Attributes

[W] connection_specification_name

Instance Public methods

connected?()

Returns true if Active Record is connected.

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 122
    def connected?
      connection_handler.connected?(connection_specification_name)
    end
πŸ”Ž See on GitHub

connection()

Returns the connection currently associated with the class. This can also be used to β€œborrow” the connection to do database work unrelated to any of the specific Active Records.

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 89
    def connection
      retrieve_connection
    end
πŸ”Ž See on GitHub

connection_config()

Returns the configuration of the associated connection as a hash:

ActiveRecord::Base.connection_config
# => {pool: 5, timeout: 5000, database: "db/development.sqlite3", adapter: "sqlite3"}

Please use only for reading.

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 109
    def connection_config
      connection_pool.spec.config
    end
πŸ”Ž See on GitHub

connection_pool()

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 113
    def connection_pool
      connection_handler.retrieve_connection_pool(connection_specification_name) || raise(ConnectionNotEstablished)
    end
πŸ”Ž See on GitHub

connection_specification_name()

Return the specification name from the current class or its parent.

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 96
    def connection_specification_name
      if !defined?(@connection_specification_name) || @connection_specification_name.nil?
        return self == Base ? "primary" : superclass.connection_specification_name
      end
      @connection_specification_name
    end
πŸ”Ž See on GitHub

establish_connection(config = nil)

Establishes the connection to the database. Accepts a hash as input where the :adapter key must be specified with the name of a database adapter (in lower-case) example for regular databases (MySQL, PostgreSQL, etc):

ActiveRecord::Base.establish_connection(
  adapter:  "mysql2",
  host:     "localhost",
  username: "myuser",
  password: "mypass",
  database: "somedatabase"
)

Example for SQLite database:

ActiveRecord::Base.establish_connection(
  adapter:  "sqlite3",
  database: "path/to/dbfile"
)

Also accepts keys as strings (for parsing from YAML for example):

ActiveRecord::Base.establish_connection(
  "adapter"  => "sqlite3",
  "database" => "path/to/dbfile"
)

Or a URL:

ActiveRecord::Base.establish_connection(
  "postgres://myuser:mypass@localhost/somedatabase"
)

In case ActiveRecord::Base.configurations is set (Rails automatically loads the contents of config/database.yml into it), a symbol can also be given as argument, representing a key in the configuration hash:

ActiveRecord::Base.establish_connection(:production)

The exceptions AdapterNotSpecified, AdapterNotFound and ArgumentError may be returned on an error.

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 49
    def establish_connection(config = nil)
      raise "Anonymous class is not allowed." unless name

      config ||= DEFAULT_ENV.call.to_sym
      spec_name = self == Base ? "primary" : name
      self.connection_specification_name = spec_name

      resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new(Base.configurations)
      spec = resolver.resolve(config).symbolize_keys
      spec[:name] = spec_name

      connection_handler.establish_connection(spec)
    end
πŸ”Ž See on GitHub

remove_connection(name = nil)

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 126
    def remove_connection(name = nil)
      name ||= @connection_specification_name if defined?(@connection_specification_name)
      # if removing a connection that has a pool, we reset the
      # connection_specification_name so it will use the parent
      # pool.
      if connection_handler.retrieve_connection_pool(name)
        self.connection_specification_name = nil
      end

      connection_handler.remove_connection(name)
    end
πŸ”Ž See on GitHub

retrieve_connection()

πŸ“ Source code
# File activerecord/lib/active_record/connection_handling.rb, line 117
    def retrieve_connection
      connection_handler.retrieve_connection(connection_specification_name)
    end
πŸ”Ž See on GitHub