Когда строка, которую вы хотите проанализировать, не содержит схему, URI
не распознает ее как имя хоста:
irb(main):001:0> require 'uri'
=> true
irb(main):002:0> uri = URI::parse("www.google.com")
=> #<URI::Generic:0x11cfc88 URL:www.google.com>
irb(main):003:0> uri.path
=> "www.google.com"
irb(main):004:0> uri.host
=> nil
Когда вы устанавливаете схему, как в своем примереи затем вызовите to_s
URI создается без хоста ...
Вы можете попробовать что-то вроде следующего: (Это быстрый взлом, я не знаю подробностей URI
...)
uri = URI::parse("www.google.com")
if uri.scheme.nil? && uri.host.nil?
unless uri.path.nil?
uri.scheme = "http"
uri.host = uri.path
uri.path = ""
end
end
puts uri.to_s