On Sep 28, 2009, at 12:45 AM, Hunt Jon wrote: > On Mon, Sep 28, 2009 at 1:11 PM, Rob Biedenharn > <Rob / agileconsultingllc.com> wrote: >> On Sep 27, 2009, at 11:48 PM, Hunt Jon wrote: >>> >>> I expect that if I run "URI.parse()" it should raise an error, but >>> it doesn't happen. >>> >>> Can anybody help me on this one? >>> >>> Jon >> >> require 'uri' >> print "Type a URL: " >> begin >> url = gets.chomp >> puts "You said: #{url.inspect}" >> uri = URI.parse(url) # should raise if a variable 'url' is >> malformed. >> puts uri.inspect >> rescue URI::InvalidURIError >> puts "That is not a valid URL. Try again." >> retry >> end >> >> Try getting a little bit more information out (and post what input >> you are >> trying that you expect to be malformed). >> >> Note that some URI's are HTTP and some might be Generic. There are >> a lot >> more types of URI that just those that start with http://. Have >> you ever >> seen a jdbc resource string? >> >> -Rob > > I expect a user to input a HTTP or HTTPS URL. e.g., http://abcdef.gov > Maybe using URI seems *too* generic after the research as 'uri' means > different protocols, not just http/https. > > I'll look into it. Perhaps using Regexp match would be better. > > Jon You can see what the scheme is determined to be: irb> require 'uri' => true irb> u=URI.parse('http://example.com/') => #<URI::HTTP:0x395b34 URL:http://example.com/> irb> u.scheme => "http" irb> x=URI.parse('example.com') => #<URI::Generic:0x392f24 URL:example.com> irb> x.scheme => nil You probably don't want to jump down the Regexp rabbit-hole if you know that you want a valid URI. Let the library do the heavy lifting. -Rob Rob Biedenharn http://agileconsultingllc.com Rob / AgileConsultingLLC.com