`rails s`不再绑定到10.0.0.4:3000

时间:2015-01-21 19:41:42

标签: ruby-on-rails virtualbox puma

我刚刚在运行OpenBSD 5.7的VirtualBox上使用Rails 4.2设置了Ruby 2.2.0,但为什么在执行rails s时无法连接到http://10.0.0.4:3000/

% rails s
=> Booting Puma
=> 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
Puma 2.11.0 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:3000

但是,如果我明确定义IP和端口,它确实有效:

% rails s -p 3000 -b 10.0.0.4
=> Booting Puma
=> Rails 4.2.0 application starting in development on http://10.0.0.4:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma 2.11.0 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://10.0.0.4:3000

但我真的必须这么做吗?

1 个答案:

答案 0 :(得分:8)

我想我读了(并且你的日志输出确认了它)rails s(4.2)不再绑定到0.0.0.0(所有接口),而只绑定到localhost。所以,除非有一个新的配置选项让它像以前一样工作,你需要像传递IP地址一样运行它。您可以传递0.0.0.0以获得旧行为。

编辑:是的,请参阅http://guides.rubyonrails.org/4_2_release_notes.html

上的第3.3节
  

由于Rack的更改,rails服务器现在会侦听localhost   默认为0.0.0.0。这对标准的影响应该很小   开发工作流程同时为http://127.0.0.1:3000和。{   http://localhost:3000将继续像以前一样自行工作   机。

     

但是,通过此更改,您将无法再访问   Rails服务器来自不同的机器,例如您的开发   环境在虚拟机中,您想要访问它   来自主机。在这种情况下,请启动服务器   rails server -b 0.0.0.0以恢复旧行为。

     

如果这样做,请务必正确配置防火墙   只有网络上受信任的计算机才能访问您的开发   服务器