Spec-Zone.ru › Ruby on Rails 4.1

модуль ActiveRecord::ConnectionHandling

Константы

DEFAULT_ENV
RAILS_ENV

Общедоступные методы экземпляра

connected?() Показать исходный код

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

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

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

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

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

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

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

# File activerecord/lib/active_record/connection_handling.rb, line 104
def connection_config
  connection_pool.spec.config
end
connection_id() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 90
def connection_id
  ActiveRecord::RuntimeRegistry.connection_id
end
connection_id=(connection_id) Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 94
def connection_id=(connection_id)
  ActiveRecord::RuntimeRegistry.connection_id = connection_id
end
connection_pool() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 108
def connection_pool
  connection_handler.retrieve_connection_pool(self) or raise ConnectionNotEstablished
end
establish_connection(spec = nil) Показать исходный код

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

ActiveRecord::Base.establish_connection(
  adapter:  "mysql",
  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 и ArgumentError.

# File activerecord/lib/active_record/connection_handling.rb, line 47
def establish_connection(spec = nil)
  spec     ||= DEFAULT_ENV.call.to_sym
  resolver =   ConnectionAdapters::ConnectionSpecification::Resolver.new configurations
  spec     =   resolver.spec(spec)

  unless respond_to?(spec.adapter_method)
    raise AdapterNotFound, "database configuration specifies nonexistent #{spec.config[:adapter]} adapter"
  end

  remove_connection
  connection_handler.establish_connection self, spec
end
remove_connection(klass = self) Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 121
def remove_connection(klass = self)
  connection_handler.remove_connection(klass)
end
retrieve_connection() Показать исходный код
# File activerecord/lib/active_record/connection_handling.rb, line 112
def retrieve_connection
  connection_handler.retrieve_connection(self)
end

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

Spec-Zone.ru

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