Używam DMOZ 's list of url topics, która zawiera niektóre adresy URL, które mają nazwy hostów zawierające podkreślenie.Alternatywa dla URI.parse, która umożliwia nazwom hostów podkreślenie
Na przykład:
608 <ExternalPage about="http://outer_heaven4.tripod.com/index2.htm">
609 <d:Title>The Outer Heaven</d:Title>
610 <d:Description>Information and image gallery of McFarlane's action figures for Trigun, Akira, Tenchi Muyo and other Japanese Sci-Fi animations.</d:Description>
611 <topic>Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures</topic>
612 </ExternalPage>
Chociaż url będzie działać w przeglądarce internetowej (lub przynajmniej to ma miejsce w kopalni: p), it's not legal according to the standard:
nazwa hosta nie może zawierać inne znaki, takie jak znak podkreślenia (_),
co powoduje błędy podczas próby analizowania takiego URL z URI.parse
:
[2] pry(main)> require 'uri'
=> true
[3] pry(main)> URI.parse "http://outer_heaven4.tripod.com/index2.htm"
URI::InvalidURIError: the scheme http does not accept registry part: outer_heaven4.tripod.com (or bad hostname?)
from ~/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/uri/generic.rb:213:in `initialize'
Czy istnieje alternatywa dla URI.parse
Mogę użyć, która ma niższą dokładność, nie staczając własnych?