Strange NoMethodError

Discussion in 'Ruby' started by Holger Biebinger, Aug 7, 2006.

  1. Hi,
    In the following test script (similar to pickaxe p. 700 ):

    require 'net/http'
    require 'uri'

    def fetch (uri_str, limit=10)
    fail 'http redirect limit exceeded' if limit.zero?
    response = Net::HTTP.get_response(URI.parse(uri_str))
    case response
    when Net::HTTPSuccess
    response
    when Net::HTTPRedirection
    fetch(response['location'], limit-1)
    else
    response.error!
    end
    end


    fetch('heise.de');


    with
    ruby test.rb
    I get the result:

    Exception `NoMethodError' at /usr/local/lib/ruby/1.8/net/http.rb:380
    - undefined method `request_uri' for #<URI::Generic:0x188f84
    URL:heise.de>
    /usr/local/lib/ruby/1.8/net/http.rb:380:in `get_response': undefined
    method `request_uri' for #<URI::Generic:0x188f84 URL:heise.de>
    (NoMethodError)
    from /usr/local/lib/ruby/1.8/net/http.rb:545:in `start'
    from /usr/local/lib/ruby/1.8/net/http.rb:379:in `get_response'
    from test.rb:6:in `fetch'
    from test.rb:18


    I had a look at /usr/local/lib/ruby/1.8/uri/http.rb
    The function was defined there:
    #
    # == Description
    #
    # Returns: path + '?' + query
    #
    def request_uri
    r = path_query
    if r[0] != ?/
    r = '/' + r
    end

    r
    end

    It should be a function of the standard libray. I am quite new to
    ruby. How can I debug this problem? Or any hints what I can do?

    Thanks in advance for your help,


    Holger
    Holger Biebinger, Aug 7, 2006
    #1
    1. Advertising

  2. Holger Biebinger

    Guest

    On Mon, 7 Aug 2006, Holger Biebinger wrote:

    > Hi,
    > In the following test script (similar to pickaxe p. 700 ):
    >
    > require 'net/http'
    > require 'uri'
    >
    > def fetch (uri_str, limit=10)
    > fail 'http redirect limit exceeded' if limit.zero?
    > response = Net::HTTP.get_response(URI.parse(uri_str))
    > case response
    > when Net::HTTPSuccess
    > response
    > when Net::HTTPRedirection
    > fetch(response['location'], limit-1)
    > else
    > response.error!
    > end
    > end
    >
    >
    > fetch('heise.de');

    ^^^^^^^^
    ^^^^^^^^

    this is not a uri.

    try

    harp:~ > ruby -r uri -e' p URI.parse("heise.de").host '
    nil

    harp:~ > ruby -r uri -e' p URI.parse("http://heise.de").host '
    "heise.de"

    regards.

    -a
    --
    happiness is not something ready-made. it comes from your own actions.
    - h.h. the 14th dali lama
    , Aug 7, 2006
    #2
    1. Advertising

  3. On Aug 7, 2006, at 5:02 PM, wrote:

    > On Mon, 7 Aug 2006, Holger Biebinger wrote:
    >
    >> Hi,
    >> In the following test script (similar to pickaxe p. 700 ):
    >>
    >> require 'net/http'
    >> require 'uri'
    >>
    >> def fetch (uri_str, limit=10)
    >> fail 'http redirect limit exceeded' if limit.zero?
    >> response = Net::HTTP.get_response(URI.parse(uri_str))
    >> case response
    >> when Net::HTTPSuccess
    >> response
    >> when Net::HTTPRedirection
    >> fetch(response['location'], limit-1)
    >> else
    >> response.error!
    >> end
    >> end
    >>
    >>
    >> fetch('heise.de');

    > ^^^^^^^^
    > ^^^^^^^^
    >
    > this is not a uri.
    >
    > try
    >
    > harp:~ > ruby -r uri -e' p URI.parse("heise.de").host '
    > nil
    >
    > harp:~ > ruby -r uri -e' p URI.parse("http://heise.de").host '
    > "heise.de"
    >
    > regards.
    >
    > -a


    Oh my god ... thank you vey much. You are right. I was a it confused
    because of the NoMethodError and I thought I had installed something
    wrongly. Thanks for your hint :)

    best regards,
    Holger
    Holger Biebinger, Aug 7, 2006
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alexey Verkhovsky
    Replies:
    0
    Views:
    176
    Alexey Verkhovsky
    Aug 3, 2004
  2. Levin Alexander

    NoMethodError in Range#include?

    Levin Alexander, Jul 13, 2005, in forum: Ruby
    Replies:
    11
    Views:
    247
  3. enspired
    Replies:
    3
    Views:
    200
    enspired
    Jul 28, 2005
  4. Peter Barry
    Replies:
    0
    Views:
    105
    Peter Barry
    Oct 18, 2005
  5. Une bévue

    strange "NoMethodError" ???

    Une bévue, Jul 16, 2006, in forum: Ruby
    Replies:
    0
    Views:
    80
    Une bévue
    Jul 16, 2006
Loading...

Share This Page