On 6/16/07, sishen <yedingding / gmail.com> wrote:
> On 6/16/07, Rick DeNatale <rick.denatale / gmail.com> wrote:
> >
> > On 6/15/07, sishen <yedingding / gmail.com> wrote:
> > > Yes, i know that. Thanks. :)
> > >
> > > But i confused by the read_timeout option of the open method.
> >
> > > > > I want to set the timeout of the open process. And i see the open
> > method
> > > > has
> > > > > a option named "read_timeout".
> > > > > So i just code as
> > > > >   open("www.abc.com", {:read_timeout => 10}).
> > > > >
> > > > > But, i can't see the effect. What's wrong with that?  Any help
> > thanks.
> >
> > Where did you see a read_timeout option?  I can't find it in any
> > documentation, although I might be missing something.
> >
> > Also you are opening "www.abc.com" which Kernel open is seeing as a
> > file name rather than a URI.
>
>
> Oh, sorry,  it's my  mistake of careless.
>
> First without open-uri
> >
> > irb(main):001:0> open("www.abc.com", {:read_timeout => 10})
> >
> TypeError: can't convert Hash into String
> >         from (irb):1:in `initialize'
> >         from (irb):1:in `open'
> >         from (irb):1
> > irb(main):002:0> open("http://www.abc.com", {:read_timeout => 10})
> > TypeError: can't convert Hash into String
> >         from (irb):2:in `initialize'
> >         from (irb):2:in `open'
> >         from (irb):2
> >
> > Now with open-uri
>
> What's your version?  No read_timeout option of the open-uri version in Ruby
> 1.8. But 1.9 or openuri in rubygems has.
>
> module OpenURI
>   Options = {
>     :proxy => true,
>     :proxy_http_basic_authentication => true,
>     :progress_proc => true,
>     :content_length_proc => true,
>     :http_basic_authentication => true,
>     :read_timeout => true,
>     :ssl_ca_cert => nil,
>     :ssl_verify_mode => nil,
>   }

Well I must have missed where you said that you were using 1.9. <G>
The general assumption is that folks are using 1.8.x which is the
stable branch, 1.9 is experimental.

In any case, if you're trying to open "www.abc.com" instead of
"http://www.abc.com" the OpenURI code isn't going to come into play
anyway.  I don't think that 1.9 changed that.  In fact here's the
actual 1.9 code in lib/open-uri.rb which monkeypatches Kernel#open

 def open(name, *rest, &block) # :doc:
    if name.respond_to?(:open)
      name.open(*rest, &block)
    elsif name.respond_to?(:to_str) &&
          %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
          (uri = URI.parse(name)).respond_to?(:open)
      uri.open(*rest, &block)
    else
      open_uri_original_open(name, *rest, &block)
    end
  end



-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/