Ответ 1
Вы можете использовать domainatrix gem, чтобы получить то, что вы хотите: url.domain + url.public_suffix
, но вы можете просто выполнить некоторые манипуляции с строкой, например uri[4..-1]
.
Возможный дубликат:
Ruby-код для извлечения хоста из строки URL
Я нашел этот модуль под названием URI, который может анализировать URL. (Я новичок в рубине. Является ли "модуль" синонимом "библиотеки" в этом случае?) Затем вы можете извлечь имя хоста.
uri = URI.parse("http://www.ruby-lang.org/")
...
p uri.host
# => "www.ruby-lang.org"
Из этого, я полагаю, вы могли бы удалить "www". и сохраняйте другие поддомены с помощью регулярных выражений.
Есть ли у кого-нибудь более прямолинейная альтернатива или этот подход кажется правильным?
Вы можете использовать domainatrix gem, чтобы получить то, что вы хотите: url.domain + url.public_suffix
, но вы можете просто выполнить некоторые манипуляции с строкой, например uri[4..-1]
.
Поэтому, отправляя свой собственный ответ, я не говорю, что драгоценные камни, такие как domainatrix или public_suffix_server, не являются хорошими элегантными решениями (хотя последний сразу же прослушивал меня, что заставило меня пойти по этому маршруту).
Люди, предлагающие использовать split(), заставили меня понять, что я могу просто вывести "www". если он существует и иным образом оставляет домены, поскольку они не устанавливают драгоценные камни и используют 1 простую строку кода:
url = request.original_url
domain = URI.parse(url).host.sub(/\Awww\./, '')
Это работает с субдоменами и многочастными суффиксами (например, co.uk). Кто-нибудь видит в этом что-то не так?
EDIT: Спасибо, спасибо за указание на слабое регулярное выражение, которое я изначально использовал. Это выражение, безусловно, лучше.