class Middleman

def self.run!(options={}, &block)

def self.run!(options={}, &block)
  set options
  handler      = detect_rack_handler
  handler_name = handler.name.gsub(/.*::/, '')
  puts "== The Middleman is standing watch on port #{port}"
  handler.run self, :Host => host, :Port => port do |server|
    trap(:INT) do
      ## Use thins' hard #stop! if available, otherwise just #stop
      server.respond_to?(:stop!) ? server.stop! : server.stop
      puts "\n== The Middleman has ended his patrol"
    end
    
    if block_given?
      block.call
      ## Use thins' hard #stop! if available, otherwise just #stop
      server.respond_to?(:stop!) ? server.stop! : server.stop
    end
  end
rescue Errno::EADDRINUSE => e
  puts "== The Middleman is already standing watch on port #{port}!"
end