Spec-Zone.ru › Ruby on Rails 5.1

модуль ActiveRecord::ConnectionHandling

Константы

DEFAULT_ENV
RAILS_ENV

Атрибуты

connection_specification_name[W]

Открытые методы экземпляров

connected?() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 120
def connected?
  connection_handler.connected?(connection_specification_name)
end

Возвращает true, если Active Record подключен.

connection() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 87
def connection
  retrieve_connection
end

Возвращает соединение, в настоящее время связанное с классом. Это также можно использовать для «заимствования» соединения для выполнения работы с базой данных, не связанной ни с одним из конкретных Active Records.

connection_config() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 107
def connection_config
  connection_pool.spec.config
end

Возвращает конфигурацию связанного соединения в виде хэша:

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

Пожалуйста, используйте только для чтения.

connection_pool() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 111
def connection_pool
  connection_handler.retrieve_connection_pool(connection_specification_name) || raise(ConnectionNotEstablished)
end
connection_specification_name() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 94
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

Возвращает имя спецификации из текущего класса или его родителя.

establish_connection(config = nil) Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 47
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

Устанавливает соединение с базой данных. Принимает хэш в качестве входных данных, где ключ adapter должен быть указан с именем адаптера базы данных (в нижнем регистре). Пример для обычных баз данных (MySQL, PostgreSQL и т.д.):

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

Пример для базы данных SQLite:

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

Также принимает ключи в виде строк (например, для разбора из YAML):

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

Или URL:

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

В случае, если ActiveRecord::Base.configurations задан (Rails автоматически загружает содержимое config/database.yml в него), в качестве аргумента также можно указать символ, представляющий ключ в хэше конфигурации:

ActiveRecord::Base.establish_connection(:production)

В случае ошибки могут быть возвращены исключения AdapterNotSpecified, AdapterNotFound и DatabaseErrors.

remove_connection(name = nil) Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 124
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() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 115
def retrieve_connection
  connection_handler.retrieve_connection(connection_specification_name)
end

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API