getaddrinfo: nodename nor servname provided, or not known

前端 未结 13 1579
梦谈多话
梦谈多话 2020-12-02 12:14

I have a Ruby on Rails application that I am deploying on a computer running Mac OS X 10.6. The code where the problem arises is run by a delayed_job. The problem only occur

相关标签:
13条回答
  • 2020-12-02 12:22

    To avoid this problem, we can bind to 127.0.0.1 instead of localhost:

    bin/rails server -b 127.0.0.1

    0 讨论(0)
  • 2020-12-02 12:23

    I got the error while trying to develop while disconnected to the Internet. However, the website I was working on needs to be able to talk to some other websites, so it choked when it couldn't do so. Connecting to the internet fixed the error.

    0 讨论(0)
  • 2020-12-02 12:24

    I was seeing this error unrelated to rails. It turned out my test was trying to use a port that was too high (greater than 65535).

    This code will produce the error in question

    require 'socket'
    Socket.getaddrinfo("127.0.0.1", "65536")
    
    0 讨论(0)
  • 2020-12-02 12:27

    If all of the above fails, try to convert to UNIX Line Endings, or do:

    brew install dos2unix
    sudo dos2unix -c mac /private/etc/hosts
    

    Maybe the hosts encoding is wrong.

    hope this helps

    0 讨论(0)
  • 2020-12-02 12:29

    rest-client's RestClient needs the http: scheme when resolving the URL. It calls Net::HTTP for you, which doesn't want the http: part, but rest-client takes care of that.

    Is the URL the actual one you are attempting to reach? example.org is a valid domain used for testing and documentation and is reachable; I'd expect the "api" and "api_endpoint" parts to fail and see that when I try to reach them.

    require 'socket'
    
    IPSocket.getaddress('example.org') # => "2620:0:2d0:200::10"
    IPSocket.getaddress('api.example.org') # => 
    # ~> -:7:in `getaddress': getaddrinfo: nodename nor servname provided, or not known (SocketError)
    # ~>    from -:7:in `<main>'
    

    Here's what I get using Curl:

    greg-mbp-wireless:~ greg$ curl api.example.org/api_endpoint
    curl: (6) Couldn't resolve host 'api.example.org'
    greg-mbp-wireless:~ greg$ curl example.org/api_endpoint
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL /api_endpoint was not found on this server.</p>
    <hr>
    <address>Apache Server at example.org Port 80</address>
    </body></html>
    greg-mbp-wireless:~ greg$ curl example.org
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <HEAD>
      <META http-equiv="Content-Type" content="text/html; charset=utf-8">
      <TITLE>Example Web Page</TITLE>
    </HEAD> 
    <body>  
    <p>You have reached this web page by typing &quot;example.com&quot;,
    &quot;example.net&quot;,&quot;example.org&quot
      or &quot;example.edu&quot; into your web browser.</p>
    <p>These domain names are reserved for use in documentation and are not available 
      for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
      2606</a>, Section 3.</p>
    </BODY>
    </HTML>
    
    0 讨论(0)
  • 2020-12-02 12:35

    I fixed this problem simply by closing and reopening the Terminal.

    0 讨论(0)
提交回复
热议问题