我刚刚在运行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
但我真的必须这么做吗?
答案 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以恢复旧行为。
如果这样做,请务必正确配置防火墙 只有网络上受信任的计算机才能访问您的开发 服务器