Spec-Zone.ru › Ruby on Rails 6.0

класс ActiveRecord::Middleware::DatabaseSelector

Родитель:
Объект

Средства DatabaseSelector Middleware обеспечивают основу для автоматической смены соединения с основной и репликой базы данных. Rails предоставляет базовый каркас для определения, когда необходимо менять соединение, и позволяет приложениям писать собственные стратегии классов, чтобы переопределить стандартное поведение.

Класс решателя определяет, когда приложение должно переключаться (например, читать из основной базы, если запись произошла менее 2 секунд назад), а класс контекста решателя устанавливает значение, которое помогает классу решателя определить, когда нужно переключаться.

Средства Middleware по умолчанию в Rails используют сессию запроса для установки отметки времени, которая сообщает приложению, когда нужно читать из основной или реплики базы данных.

Чтобы использовать DatabaseSelector в своем приложении с настройками по умолчанию, добавьте следующие параметры в конфигурацию вашей среды:

config.active_record.database_selector = { delay: 2.seconds }
config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session

В новых приложениях эти строки будут закомментированы в файле production.rb.

Стандартное поведение можно изменить, установив параметры конфигурации на пользовательский класс:

config.active_record.database_selector = { delay: 2.seconds }
config.active_record.database_resolver = MyResolver
config.active_record.database_resolver_context = MyResolver::MySession

Атрибуты

context_klass[Ч]
options[Ч]
resolver_klass[Ч]

Публичные методы класса

new(app, resolver_klass = nil, context_klass = nil, options = {}) Показать исходный код
# File activerecord/lib/active_record/middleware/database_selector.rb, line 38
def initialize(app, resolver_klass = nil, context_klass = nil, options = {})
  @app = app
  @resolver_klass = resolver_klass || Resolver
  @context_klass = context_klass || Resolver::Session
  @options = options
end

Публичные методы экземпляра

call(env) Показать исходный код
# File activerecord/lib/active_record/middleware/database_selector.rb, line 49
def call(env)
  request = ActionDispatch::Request.new(env)

  select_database(request) do
    @app.call(env)
  end
end

Средства для определения соединения с базой данных, которое нужно использовать в приложении с несколькими базами данных.

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

Spec-Zone.ru

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