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

Version Path
ros-apartment-3.2.0 lib/apartment/elevators/generic.rb
synerma-apartment-3.1.0 lib/apartment/elevators/generic.rb
puzzle-apartment-2.13.0 lib/apartment/elevators/generic.rb
puzzle-apartment-2.12.0 lib/apartment/elevators/generic.rb
ros-apartment-2.11.0 lib/apartment/elevators/generic.rb
ros-apartment-2.10.0 lib/apartment/elevators/generic.rb
ros-apartment-2.9.0 lib/apartment/elevators/generic.rb
ros-apartment-2.8.1 lib/apartment/elevators/generic.rb
ros-apartment-2.8.1.rc2 lib/apartment/elevators/generic.rb
ros-apartment-2.8.1.rc1 lib/apartment/elevators/generic.rb
ros-apartment-2.8.0 lib/apartment/elevators/generic.rb
ros-apartment-2.7.2 lib/apartment/elevators/generic.rb
ros-apartment-2.7.1 lib/apartment/elevators/generic.rb
ros-apartment-2.7.0 lib/apartment/elevators/generic.rb
ros-apartment-2.6.1 lib/apartment/elevators/generic.rb
ros-apartment-2.6.0 lib/apartment/elevators/generic.rb
ros-apartment-2.5.0 lib/apartment/elevators/generic.rb
ros-apartment-2.4.0 lib/apartment/elevators/generic.rb