Sha256: e0380c3688a2434eaed8caf495f9606c2d32973a365c86a883f6ed6a70205e4c

Contents?: true

Size: 609 Bytes

Versions: 21

Compression:

Stored size: 609 Bytes

Contents

module Apartment
  module Elevators
    # Provides a rack based db switching solution based on subdomains
    # Assumes that database name should match subdomain
    class Subdomain
      
      def initialize(app)
        @app = app
      end
      
      def call(env)
        request = ActionDispatch::Request.new(env)
        
        database = subdomain(request)
        
        Apartment::Database.switch database if database
        
        @app.call(env)
      end
      
      def subdomain(request)
        request.subdomain.present? && request.subdomain || nil
      end
      
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
dr-apartment-0.14.1 lib/apartment/elevators/subdomain.rb
apartment-0.14.2 lib/apartment/elevators/subdomain.rb
apartment-0.14.1 lib/apartment/elevators/subdomain.rb
apartment-0.14.0 lib/apartment/elevators/subdomain.rb
apartment-0.13.1 lib/apartment/elevators/subdomain.rb
apartment-0.13.0 lib/apartment/elevators/subdomain.rb
apartment-0.12.0 lib/apartment/elevators/subdomain.rb
apartment-0.11.1 lib/apartment/elevators/subdomain.rb
apartment-0.11.0 lib/apartment/elevators/subdomain.rb
apartment-0.10.3 lib/apartment/elevators/subdomain.rb
apartment-0.10.2 lib/apartment/elevators/subdomain.rb
apartment-0.10.1 lib/apartment/elevators/subdomain.rb
apartment-0.10.0 lib/apartment/elevators/subdomain.rb
apartment-0.9.2 lib/apartment/elevators/subdomain.rb
apartment-0.9.1 lib/apartment/elevators/subdomain.rb
apartment-0.9.0 lib/apartment/elevators/subdomain.rb
apartment-0.8.0 lib/apartment/elevators/subdomain.rb
apartment-0.7.0 lib/apartment/elevators/subdomain.rb
apartment-0.6.0 lib/apartment/elevators/subdomain.rb
apartment-0.5.1 lib/apartment/elevators/subdomain.rb