Rails服务器无法启动;getaddrinfo:未提供节点名或服务名,或未知(SocketError)

5
我还没有找到解决问题的办法,但几天前有人已经问过同样的问题了-(Rails Server Keeps Exiting (SocketError)
当我启动rails服务器时,系统返回一些我无法理解的错误。为了在我的mac上安装Ruby on Rails,我按照http://railsapps.github.io/installrubyonrails-mac.html上列出的步骤进行了操作。
这是我的终端响应:
$ rails server
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-02-28 02:14:46] INFO  WEBrick 1.3.1
[2015-02-28 02:14:46] INFO  ruby 2.2.0 (2014-12-25) [x86_64-darwin14]
Exiting
/Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/socket.rb:232:in `getaddrinfo': getaddrinfo: nodename nor servname provided, or not known (SocketError)
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/socket.rb:232:in `foreach'
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/socket.rb:459:in `tcp_server_sockets'
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/utils.rb:70:in `create_listeners'
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:133:in `listen'
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:114:in `initialize'
    from /Users/alexshel/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:45:in `initialize'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/rack-1.6.0/lib/rack/handler/webrick.rb:32:in `new'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/rack-1.6.0/lib/rack/handler/webrick.rb:32:in `run'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/rack-1.6.0/lib/rack/server.rb:286:in `start'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands/server.rb:80:in `start'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:80:in `block in server'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@global/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
    from /Users/alexshel/workspace/myapp/bin/rails:8:in `require'
    from /Users/alexshel/workspace/myapp/bin/rails:8:in `<top (required)>'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/client/rails.rb:27:in `load'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/client/rails.rb:27:in `call'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/client/command.rb:7:in `call'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/client.rb:26:in `run'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/bin/spring:48:in `<top (required)>'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/binstub.rb:11:in `load'
    from /Users/alexshel/.rvm/gems/ruby-2.2.0@myapp/gems/spring-1.3.3/lib/spring/binstub.rb:11:in `<top (required)>'
    from /Users/alexshel/workspace/myapp/bin/spring:13:in `require'
    from /Users/alexshel/workspace/myapp/bin/spring:13:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

Please help.


1
也许是本地主机出了一些奇怪的问题。你能ping通localhost吗? - Rafa de Castro
看起来你的 /etc/hosts 文件中没有定义 localhost - dgilperez
是的,我无法ping通本地主机。 - Alex
4个回答

15

127.0.0.1 localhost记录添加到private/etc/hosts文件中解决了一个问题,该记录由于某种原因被删除。


2

对于将来遇到此问题的任何用户,我能够通过在我的private/etc/hosts文件末尾添加以下内容来解决它。

127.0.0.1 YOURNAME-MacBook-Pro.local

YOURNAME-MacBook-Pro更新为您的机器名称,希望您已经准备就绪。


1
请注意,您可以在“系统偏好设置>共享”中找到或更改您的OS X机器名称(至少在High Sierra上),您会看到类似于“本地网络上的计算机可以访问您的计算机: MacBook-Pro-2.local”的文本。 - stevenspiel

0

我在Rails环境中遇到了Redis的类似问题。我在我的Mac的/private/etc/hosts文件中添加了端口号和"Redis",这解决了错误。假设你的端口号是"1234",你需要添加:1234 redis。对于本地主机,你需要添加:127.0.0.1 localhost。希望这能为你解决问题提供一些线索。


0

尝试更改为UNIX编码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接