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.

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

irb(main):003:0> require 'open-uri'
=> true
irb(main):004:0> open("www.abc.com", {:read_timeout => 10})
TypeError: can't convert Hash into String
        from /usr/local/lib/ruby/1.8/open-uri.rb:32:in `initialize'
        from /usr/local/lib/ruby/1.8/open-uri.rb:32:in `open_uri_original_open'
        from /usr/local/lib/ruby/1.8/open-uri.rb:32:in `open'
        from (irb):4

Note that there's no change since "www.abc.com" isn't a url.

irb(main):005:0> open("http://www.abc.com", {:read_timeout => 10})
ArgumentError: unrecognized option: read_timeout
        from /usr/local/lib/ruby/1.8/open-uri.rb:103:in `check_options'
        from /usr/local/lib/ruby/1.8/open-uri.rb:100:in `each'
        from /usr/local/lib/ruby/1.8/open-uri.rb:100:in `check_options'
        from /usr/local/lib/ruby/1.8/open-uri.rb:124:in `open_uri'
        from /usr/local/lib/ruby/1.8/open-uri.rb:528:in `open'
        from /usr/local/lib/ruby/1.8/open-uri.rb:30:in `open'
        from (irb):5
irb(main):006:0>

And :read_timeout isn't a known option.


-- 
Rick DeNatale

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