def start(publish = true)
      if publish
        puts <<-EOH.gsub(/^ {10}/, '')
          >> Starting Community Zero (v#{CommunityZero::VERSION})...
          >> WEBrick (v#{WEBrick::VERSION}) on Rack (v#{Rack.release}) is listening at #{url}
          >> Press CTRL+C to stop

        EOH
      end

      thread = start_background

      %w[INT TERM].each do |signal|
        Signal.trap(signal) do
          puts "\n>> Stopping Community Zero..."
          @server.shutdown
        end
      end

      # Move the background process to the main thread
      thread.join
    end
def start(publish = true)
      if publish
        puts <<-EOH.gsub(/^ {10}/, '')
          >> Starting Community Zero (v#{CommunityZero::VERSION})...
          >> WEBrick (v#{WEBrick::VERSION}) on Rack (v#{Rack.release}) is listening at #{url}
          >> Press CTRL+C to stop

        EOH
      end

      thread = start_background

      %w[INT TERM].each do |signal|
        Signal.trap(signal) do
          puts "\n>> Stopping Community Zero..."
          @server.shutdown
        end
      end

      # Move the background process to the main thread
      thread.join
    end
Start a Community Zero server in the current thread. You can stop this
 server by canceling the current thread.

 @param [Boolean] publish
   publish the server information to STDOUT

 @return [nil]
   this method will block the main thread until interrupted