2016-10-22 2 views
1

Скажем, у меня есть URL-адрес, как это: http://www.rubinassociatespa.com/AccountantBocaRaton.htmlКак извлечь корневой домен из домена, используя класс URI в Ruby?

Я хочу, чтобы просто извлечь базовый домен - http://www.rubinassociatespa.com

Я не могу понять, как сделать это с помощью класса рубин URI, хотя, не делая манипуляций со строками.

[36] pry(#<YPCrawler::PageParser>)> @url 
=> "http://www.rubinassociatespa.com/AccountantBocaRaton.html" 
[37] pry(#<YPCrawler::PageParser>)> URI(@url).scheme 
=> "http" 
[38] pry(#<YPCrawler::PageParser>)> URI(@url).host 
=> "www.rubinassociatespa.com" 

Чтобы сделать это с помощью манипуляций со строками, я должен был бы сделать что-то вроде:

URI(@url).scheme + "://" + URI(@url).host 

Но это кажется Hacky.

Есть ли более «родной» способ сделать это? Какой-то классный метод или что-то в классе URI, который может элегантно справиться с этим?

+0

нет методов вне коробки. – Ilya

ответ

1

Я всегда использую:

▶ uri.to_s[/\A.*(?=#{uri.path}\z)/] 
#⇒ "http://www.rubinassociatespa.com" 

Это безопасно, так как это именно то, что базовый домен: весь URI без пути.

Обратите внимание, что не будет никакого единого метода из-за URI класса extensibility и гибкости самого RFC.

Смежные вопросы