Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveRecord::Middleware::ShardSelector

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

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

Класс ShardSelector принимает набор параметров (в настоящее время поддерживается только параметр `lock`), которые могут использоваться посредником для изменения поведения. `lock` по умолчанию равен true и запрещает переключение фрагментов во время выполнения блока. Если `lock` равен false, то разрешено переключение фрагментов. Для фрагментации на основе арендаторов `lock` должен всегда быть true, чтобы предотвратить случайное переключение между арендаторами кодом приложения.

Параметры можно задать в конфигурации:

config.active_record.shard_selector = { lock: true }

Приложения также должны предоставить код для решателя, так как он зависит от моделей, специфичных для приложения. Пример решателя будет выглядеть так:

config.active_record.shard_resolver = ->(request) {
  subdomain = request.subdomain
  tenant = Tenant.find_by_subdomain!(subdomain)
  tenant.shard
}

Атрибуты

options[Ч]
resolver[Ч]

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

new(app, resolver, options = {}) Показать исходный код
# File activerecord/lib/active_record/middleware/shard_selector.rb, line 30
def initialize(app, resolver, options = {})
  @app = app
  @resolver = resolver
  @options = options
end

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

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

  shard = selected_shard(request)

  set_shard(shard) do
    @app.call(env)
  end
end

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

Spec-Zone.ru

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