123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::ConnectionHandling

Constant Summary

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#connected?Boolean (readonly)

Returns true if Active Record is connected.

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 122

def connected?
  connection_handler.connected?(connection_specification_name)
end

#connection_specification_name (rw)

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

[ GitHub ]

  
# 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

#connection_specification_name=(value) (rw)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 93

attr_writer :connection_specification_name

Instance Method Details

#clear_active_connections!

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 142

delegate :clear_active_connections!, :clear_reloadable_connections!,
  :clear_all_connections!, :flush_idle_connections!, to: :connection_handler

#clear_all_connections!

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 142

delegate :clear_active_connections!, :clear_reloadable_connections!,
  :clear_all_connections!, :flush_idle_connections!, to: :connection_handler

#clear_reloadable_connections!

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 142

delegate :clear_active_connections!, :clear_reloadable_connections!,
  :clear_all_connections!, :flush_idle_connections!, to: :connection_handler

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

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 89

def connection
  retrieve_connection
end

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

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 109

def connection_config
  connection_pool.spec.config
end

#connection_pool

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 113

def connection_pool
  connection_handler.retrieve_connection_pool(connection_specification_name) || raise(ConnectionNotEstablished)
end

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

[ GitHub ]

  
# 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

#flush_idle_connections!

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 142

delegate :clear_active_connections!, :clear_reloadable_connections!,
  :clear_all_connections!, :flush_idle_connections!, to: :connection_handler

#remove_connection(name = nil)

[ GitHub ]

  
# 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

#retrieve_connection

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_handling.rb', line 117

def retrieve_connection
  connection_handler.retrieve_connection(connection_specification_name)
end