class Ekylibre::MultiTenancy::Middleware::SidekiqMiddleware::ContainerAwareServerMiddleware

Server Sidekiq middleware switching to the correct tenant (if any) based on the job context

Public Instance Methods

call(worker_class, item, queue) { || ... } click to toggle source
# File lib/ekylibre/multi_tenancy/middleware/sidekiq_middleware/container_aware_server_middleware.rb, line 10
def call(worker_class, item, queue)
  tenant = item.fetch('tenant', nil)
  container = item.fetch('container').dup

  PluginSystem::GlobalContainer.replace_with(container) do
    item['container'] = container

    if tenant.nil?
      yield
    else
      container
        .get(TenantSwitcher)
        .switch(tenant) { yield }
    end
  end
end