Sha256: f50b6e36b2a5b6137bd7dfd5f3223ed37ea0dd62c83fb42de6d2437f28de5d1f
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 KB
Contents
require 'rack' module Motel class Lobby def initialize(app) @app = app end def call(env) request = Rack::Request.new(env) name = tenant_name(request) if name if ActiveRecord::Base.motel.tenant?(name) ActiveRecord::Base.motel.current_tenant = name @app.call(env) else path = ActiveRecord::Base.motel.nonexistent_tenant_page file = File.expand_path(path) if path body = (File.exists?(file.to_s)) ? File.read(file) : "Nonexistent #{name} tenant" [404, {"Content-Type" => "text/html", "Content-Length" => body.size.to_s}, [body]] end else ActiveRecord::Base.motel.current_tenant = nil @app.call(env) end end private def tenant_name(request) if ActiveRecord::Base.motel.admission_criteria regex = Regexp.new(ActiveRecord::Base.motel.admission_criteria) name = request.path.match(regex) name[1] if name else request.host.split('.').first end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
motel-activerecord-1.0.1 | lib/motel/lobby.rb |
motel-activerecord-1.0.0 | lib/motel/lobby.rb |