Class: Ekylibre::MultiTenancy::Middleware::SidekiqMiddleware::ContainerAwareServerMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/ekylibre/multi_tenancy/middleware/sidekiq_middleware/container_aware_server_middleware.rb

Overview

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

Instance Method Summary collapse

Instance Method Details

#call(worker_class, item, queue) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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