Sha256: f902b42bc6e1f515f075a5f1850dd3254ac8e7dc1a88b9522e55a0e52634ce76

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

module ShamRack

  module Registry
  
    def mount(rack_app, address, port = nil)
      port ||= Net::HTTP.default_port
      registry[[address, port]] = rack_app
    end
    
    def unmount_all
      registry.clear
    end

    def at(address, port = nil, &block)
      if block
        mount(block, address, port)
      else
        Registrar.new(address, port)
      end
    end
    
    def application_for(address, port = nil)
      port ||= Net::HTTP.default_port
      registry[[address, port]]
    end

    private
    
    def registry
      @registry ||= {}
    end
    
  end
    
  extend Registry

  class Registrar
    
    def initialize(address, port = nil)
      @address = address
      @port = port
    end

    def rackup(&block)
      require "rack"
      app = Rack::Builder.new(&block).to_app
      ShamRack.mount(app, @address, @port)
    end
    
    def sinatra(&block)
      require "sinatra/base"
      sinatra_app = Class.new(Sinatra::Base)
      sinatra_app.class_eval(&block)
      ShamRack.mount(sinatra_app.new, @address, @port)
    end

  end

end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
mdub-sham_rack-1.1.2 lib/sham_rack/registry.rb
sham_rack-1.2.1 lib/sham_rack/registry.rb
sham_rack-1.2.0 lib/sham_rack/registry.rb
sham_rack-1.1.1 lib/sham_rack/registry.rb
sham_rack-1.1.2 lib/sham_rack/registry.rb