class Innkeeper::Elevators::Generic

Provides a rack based tenant switching solution based on request

Public Class Methods

new(app, processor = nil) click to toggle source
# File lib/innkeeper/elevators/generic.rb, line 10
def initialize(app, processor = nil)
  @app = app
  @processor = processor || method(:parse_tenant_name)
end

Public Instance Methods

call(env) click to toggle source
# File lib/innkeeper/elevators/generic.rb, line 15
def call(env)
  request = Rack::Request.new(env)

  database = @processor.call(request)

  if database
    Innkeeper::Tenant.switch(database) { @app.call(env) }
  else
    @app.call(env)
  end
end
parse_tenant_name(request) click to toggle source
# File lib/innkeeper/elevators/generic.rb, line 27
def parse_tenant_name(request)
  raise "Override"
end