2016-10-22 56 views
1

說我有這樣的URL:http://www.rubinassociatespa.com/AccountantBocaRaton.html如何在Ruby中使用URI類從域中提取根域?

我只想提取基本域 - http://www.rubinassociatespa.com

我無法弄清楚如何使用Ruby 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 

但似乎哈克。

是否有更「原生」的方式來做到這一點?一些很酷的方法或類似URI類可以優雅地處理這個?

+0

有沒有開箱即用的方法。 – Ilya

回答

1

我總是用:

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

這是安全的,因爲它正是基域是什麼:整個URI不帶路徑。

請注意,由於URI類extensibility和RFC本身的靈活性,不會有任何統一的方法。