class Capybara::Server

def find_available_port(host)

def find_available_port(host)
  server = TCPServer.new(host, 0)
  port = server.addr[1]
  server.close
  # Workaround issue where some platforms (mac, ???) when passed a host
  # of '0.0.0.0' will return a port that is only available on one of the
  # ip addresses that resolves to, but the next binding to that port requires
  # that port to be available on all ips
  server = TCPServer.new(host, port)
  port
rescue Errno::EADDRINUSE
  retry
ensure
  server&.close
end