class Kwipper::HttpServer

Constants

DEFAULT_PORT

Attributes

host[R]

Public Class Methods

new(bind = '127.0.0.1', port = 7335) click to toggle source
Calls superclass method
# File lib/kwipper/http_server.rb, line 10
def initialize(bind = '127.0.0.1', port = 7335)
  @bind, @port = bind, port
  @host = "#@bind#{":#@port" unless port.to_i == DEFAULT_PORT}"
  log.debug "Starting server on #@host"
  super
end
run(bind = '127.0.0.1', port = 7335) click to toggle source
# File lib/kwipper/http_server.rb, line 6
def self.run(bind = '127.0.0.1', port = 7335)
  HttpServer.new(bind, port).serve
end

Public Instance Methods

serve() click to toggle source
# File lib/kwipper/http_server.rb, line 17
def serve
  load_models
  load_controllers
  parser = HttpParser.new
  Kwipper.log_startup_time

  while socket = accept
    begin
      request = parser.parse socket

      log.info "#{request.info} #{request.params.inspect unless request.params.empty?}".strip.green

      response = Application.new.respond_to request
      socket.write response.to_http_response

    rescue Errno::ECONNRESET, Errno::EPIPE => e
      log.info "#{e.class} #{e.message}".yellow
    rescue Kwipper::EmptyRequest => e
      log.warn "#{e.class} #{e.message}".yellow
    ensure
      socket.close
    end
  end

rescue Interrupt
  socket.close if socket && !socket.closed?
  Model.db.close
  log.debug "Ok bye."
end

Private Instance Methods

load_controllers() click to toggle source
# File lib/kwipper/http_server.rb, line 55
def load_controllers
  Dir[File.join(Kwipper::ROOT, 'app/controllers/**/*.rb')].each do |controller|
    require controller
  end
end
load_models() click to toggle source
# File lib/kwipper/http_server.rb, line 49
def load_models
  Dir[File.join(Kwipper::ROOT, 'app/models/**/*.rb')].each do |model|
    require model
  end
end