Какой лучший способ проанализировать URL-адреса для извлечения домена?

Возможный дубликат:
Ruby-код для извлечения хоста из строки URL

Я нашел этот модуль под названием URI, который может анализировать URL. (Я новичок в рубине. Является ли "модуль" синонимом "библиотеки" в этом случае?) Затем вы можете извлечь имя хоста.

uri = URI.parse("http://www.ruby-lang.org/")
...
p uri.host
# => "www.ruby-lang.org"

Из этого, я полагаю, вы могли бы удалить "www". и сохраняйте другие поддомены с помощью регулярных выражений.

Есть ли у кого-нибудь более прямолинейная альтернатива или этот подход кажется правильным?

Ответ 1

Вы можете использовать domainatrix gem, чтобы получить то, что вы хотите: url.domain + url.public_suffix, но вы можете просто выполнить некоторые манипуляции с строкой, например uri[4..-1].

Ответ 2

Поэтому, отправляя свой собственный ответ, я не говорю, что драгоценные камни, такие как domainatrix или public_suffix_server, не являются хорошими элегантными решениями (хотя последний сразу же прослушивал меня, что заставило меня пойти по этому маршруту).

Люди, предлагающие использовать split(), заставили меня понять, что я могу просто вывести "www". если он существует и иным образом оставляет домены, поскольку они не устанавливают драгоценные камни и используют 1 простую строку кода:

url = request.original_url
domain = URI.parse(url).host.sub(/\Awww\./, '')

Это работает с субдоменами и многочастными суффиксами (например, co.uk). Кто-нибудь видит в этом что-то не так?

EDIT: Спасибо, спасибо за указание на слабое регулярное выражение, которое я изначально использовал. Это выражение, безусловно, лучше.