微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 为什么Puma只绑定到tcp6? (通过`rails s`)

全新生成的Rails 4.2.0项目. Ran rails s,使用WEBrick表现得如预期:
vagrant@web1:~$netstat -nlpt
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      27158/ruby2.1   
tcp6       0      0 ::1:3000                :::*                    LISTEN      27158/ruby2.1

添加puma到Gemfile,运行bundle,然后再次使用rails;想出了Puma,但只绑定了tcp6接口,而不是tcp:

vagrant@web1:~$netstat -nlpt
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 ::1:3000                :::*                    LISTEN      27116/ruby2.1

有什么线索的原因?我一直在谷歌搜索没有运气.

更新:

运行puma -b tcp://0.0.0.0:3000有效.但是,将bind指令添加到config / puma.rb并运行rails s不会:

bind 'tcp://0.0.0.0:3000'

然而,我的配置文件中的threads / workers指令正在工作,因此我知道配置文件正在加载和使用. (甚至添加一个put语句以确定.)

如果我只是运行puma,绑定到正确的接口,配置文件甚至会被拾取.我可能只需要使用puma而不是rails s,即使它很烦人,也必须添加到我的开发人员文档中.

UPDATE2:

我误解了.运行rails s不会自动获取config / puma.rb.还在调查……

解决方法

运行轨道如:
rails s -b 0.0.0.0

适合我.问题是“localhost”(认绑定地址)绑定在IPv4和IPv6上,如果两者都可用,则选择v6.0.0.0.0强制使用IPv4地址(也适用于127.0.0.1).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐