class Middleman::PreviewServer::AllInterfaces
This one is used if no bind address and no server name is given
def self.matches?(opts={})
def self.matches?(opts={}) opts[:bind_address].blank? && opts[:server_name].blank? end
def after_init
def after_init @listeners << ServerIpAddress.new('::') @listeners << ServerIpAddress.new('0.0.0.0') end
def includes_array?(a, b)
def includes_array?(a, b) !(a & b).empty? end
def initialize(*args)
def initialize(*args) super after_init end
def resolve_me(resolver)
def resolve_me(resolver) hostname = ServerHostname.new(Socket.gethostname) hostname_ips = resolver.ips_for(hostname) network_interface = ServerIpAddress.new(Array(local_network_interfaces).first) resolved_name = ServerHostname.new(resolver.names_for(network_interface).first) if includes_array? local_network_interfaces, hostname_ips @server_name = hostname @site_addresses << hostname network_interface = ServerIpAddress.new((local_network_interfaces & hostname_ips).first) elsif RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/ @server_name = hostname @site_addresses << hostname elsif !resolved_name.blank? @server_name = resolved_name @site_addresses << resolved_name else @server_name = network_interface end @site_addresses << network_interface self end