Sha256: 2e8e29392895b9f29aa66d90eba11056c331b32d7ebb4836da1f36b91d0fae06

Contents?: true

Size: 1.24 KB

Versions: 8

Compression:

Stored size: 1.24 KB

Contents

require 'stickler/error'
require 'stickler/middleware/compression'
require 'stickler/middleware/gemcutter'
require 'stickler/middleware/mirror'
require 'stickler/middleware/index'
require 'stickler/middleware/not_found'
require 'rack/commonlogger'

module Stickler
  class Server

    # The directory holding all the repositories
    attr_reader :stickler_root

    def initialize( stickler_root )
      @stickler_root = File.expand_path( stickler_root )
      raise ::Stickler::Error, "Stickler root directory '#{@stickler_root}' must already exist" unless File.directory?( @stickler_root )
      raise ::Stickler::Error, "Stickler root directory '#{@stickler_root}' must be writable" unless File.writable?( @stickler_root )
    end

    def app
      root = self.stickler_root
      Rack::Builder.app do
        use Rack::CommonLogger
        use Stickler::Middleware::Compression
        use Stickler::Middleware::Gemcutter, :serve_indexes => false, :repo_root => File.join( root, "gemcutter" )
        use Stickler::Middleware::Mirror,    :serve_indexes => false, :repo_root => File.join( root, "mirror" )
        use Stickler::Middleware::Index,     :serve_indexes => true
        use Stickler::Middleware::NotFound
        run Sinatra::Base
      end
    end
 end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
stickler-2.2.4 lib/stickler/server.rb
stickler-2.2.3 lib/stickler/server.rb
stickler-2.2.2 lib/stickler/server.rb
stickler-2.1.4 lib/stickler/server.rb
stickler-2.1.3 lib/stickler/server.rb
stickler-2.1.2 lib/stickler/server.rb
stickler-2.1.1 lib/stickler/server.rb
stickler-2.1.0 lib/stickler/server.rb