Просто короткое замечание: чтобы преодолеть второй разбор URL-адреса из второго примера Mischas, вы можете сделать сравнение строк вместо URI.parse.
# Only parses once
def get_host_without_www(url)
url = "http://#{url}" unless url.start_with?('http')
uri = URI.parse(url)
host = uri.host.downcase
host.start_with?('www.') ? host[4..-1] : host
end
Недостатком этого подхода является то, чтоон ограничивает URL-адреса на основе http (s), что является широко распространенным стандартом.Но если вы будете использовать его более широко (например, для ftp-ссылок), вы должны соответственно отрегулировать.