Sha256: edb004be3ab0d69358c1bd65d17b2be8ecd1392172c84af1439e96b76024650f

Contents?: true

Size: 773 Bytes

Versions: 7

Compression:

Stored size: 773 Bytes

Contents

require 'active_support/core_ext/string/starts_ends_with'
require 'rack'

module Massimo
  class Server
    class << self
      def start(site, port = 3000)
        handler = Rack::Handler.default
        trap(:INT) do
          if handler.respond_to?(:shutdown)
            handler.shutdown
          else
            exit
          end
        end
        handler.run(self.new(site), :Port => port)
      end
    end
    
    def initialize(site = Massimo.site)
      @site        = site
      @file_server = Rack::File.new(site.config.output_path)
      @watcher     = Massimo::Watcher.new(site)
    end
    
    def call(env)
      @watcher.process
      env['PATH_INFO'] << 'index.html' if env['PATH_INFO'].ends_with? '/'
      @file_server.call(env)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
massimo-0.10.3 lib/massimo/server.rb
massimo-0.10.2 lib/massimo/server.rb
massimo-0.10.1 lib/massimo/server.rb
massimo-0.10.0 lib/massimo/server.rb
massimo-0.9.0 lib/massimo/server.rb
massimo-0.8.5 lib/massimo/server.rb
massimo-0.8.4 lib/massimo/server.rb