Errno :: EHOSTUNREACH无主机路线 - 连接(2)

时间:2011-05-16 15:23:20

标签: ruby

Errno::EHOSTUNREACH in UsersController#create

No route to host - connect(2)

使用Rails应用程序发送邮件时出现此错误。

6 个答案:

答案 0 :(得分:8)

错误Errno::EHOSTUNREACH: No route to host - connect(2)表示路由问题,可能与错误的IP地址有关。您可能在/etc/hosts(将hosts file将主机名映射到IP地址)或其他地方指定了错误的IP,例如在config / deploy.rb等中。如果您使用本地网络DHCP服务器,IP地址可以经常更改。

答案 1 :(得分:5)

建立在joeshmo的回答:

begin
  # problematic code
rescue Errno::EHOSTUNREACH
  # log the error
  # let the User know
rescue
  # handle other exceptions
end

答案 2 :(得分:1)

这可能不适用于您,但我遇到了类似的问题。我们的内部电子邮件服务器一直存在问题,网络主机有时无法将电子邮件发送到我们自己的地址。要解决我无法控制的问题,并防止500错误通过,我刚刚抓住了异常。

在发送电子邮件的控制器中,我打包了邮件程序:

  Notifier.deliver_issue_updated(@issue, @changes, current_user)

喜欢这个

  begin
    Notifier.deliver_issue_updated(@issue, @changes, current_user)
  rescue
    flash[:notice] += " Unable to deliver email notices."
  end

现在通知用户该电子邮件没有发出,但没有被500错误打扰。

希望有所帮助。

答案 3 :(得分:1)

如果您正在进行厨师 - 客户端部署,那么在client.rb中错误的 HOST / SERVER IP 会出现问题

cd /etc/chef/

编辑client.rb

chef_server_url "http://CORRECT_SERVER_IP:4000"

答案 4 :(得分:0)

好的,我得到了同样的错误。所以我在Onpremise服务器'Z'上使用一个厨师服务器并试图引导一个节点'X'。所以我写了一本食谱,写了所有客户的主机名和ipaddresses,其中包括服务器'Y'的ip和主机名到/etc/hosts

这就是我犯的错误。

我使用Onpremise上的Chef server引导了云上的节点。 我确实改变了'Y'的网络接口并忘记了与'Z'的客户端ip与现在不同。后来我尝试用'Y'引导'X',但由于X /etc/hosts包含旧的Y,所以它无法找到主机路由,因为它正在尝试旧的ip。

然后我尝试更改/etc/hosts中的旧IP并再次运行chef-client然后一切正常。希望这会对你有所帮助。

请记住,即使cname指向不同的IP而不是指向的IP,您也可能会遇到此错误。

因此,每当您收到此错误时,请尝试从要运行chef-client的节点ssh到chef server ip并查看您是否能够连接。如果它没有连接,那么它意味着我在上面解释的相同

答案 5 :(得分:0)

检查防火墙是否关闭: 您可以运行以下命令

systemctl stop firewalld

systemctl disable firewalld