30 lines
603 B
Ruby
30 lines
603 B
Ruby
module Middleman
|
|
class PreviewServer
|
|
# Probe for tcp ports
|
|
#
|
|
# This one first tries `try_port` if this is not available use the free
|
|
# port returned by TCPServer.
|
|
class TcpPortProber
|
|
# Check for port
|
|
#
|
|
# @param [Integer] try_port
|
|
# The port to be checked
|
|
#
|
|
# @return [Integer]
|
|
# The port
|
|
def port(try_port)
|
|
server = TCPServer.open(try_port)
|
|
server.close
|
|
|
|
try_port
|
|
rescue
|
|
server = TCPServer.open(0)
|
|
port = server.addr[1]
|
|
server.close
|
|
|
|
port
|
|
end
|
|
end
|
|
end
|
|
end
|