Sha256: 164a8b560f27f5ab9283c4a18b511553d726b587fd9d97377cb5d6a62dcc5e6b
Contents?: true
Size: 692 Bytes
Versions: 18
Compression:
Stored size: 692 Bytes
Contents
# frozen_string_literal: true require 'rack/request' require 'apartment/tenant' module Apartment module Elevators # Provides a rack based tenant switching solution based on request # class Generic def initialize(app, processor = nil) @app = app @processor = processor || method(:parse_tenant_name) end def call(env) request = Rack::Request.new(env) database = @processor.call(request) if database Apartment::Tenant.switch(database) { @app.call(env) } else @app.call(env) end end def parse_tenant_name(_request) raise 'Override' end end end end
Version data entries
18 entries across 18 versions & 3 rubygems