【问题标题】:Rails application not visible to local networkRails 应用程序对本地网络不可见
【发布时间】:2015-05-21 20:47:55
【问题描述】:

自从升级到 OSX Yosemite 以来,我第一次需要从同一网络上的另一台机器上查看在我的机器上运行的应用程序。以前,这就像找到我的内部 IP 地址并将其与端口 3000 一起使用一样简单,例如。 http://192.168.0.111:3000.

但是,我现在发现在优胜美地这行不通。该应用程序肯定正在运行,可以通过localhost:3000 使用,但不能通过我的内部 IP。

我已经运行了网络实用程序端口扫描程序,它显示 localhost 公开了端口 3000,但我的 IP 没有。网络上其他尚未升级的机器(10.7.5 和 10.9.5)没有这个问题。

任何帮助将不胜感激。

编辑:根据系统偏好设置的安全和隐私面板,优胜美地防火墙当前处于关闭状态 - 所以这不会导致问题。

【问题讨论】:

    标签: ruby-on-rails osx-yosemite


    【解决方案1】:

    默认情况下,rails server 将只接受来自 localhost 的连接。您可以通过查看控制台输出来检查这一点:

    Listening on localhost:3000, CTRL+C to stop
    

    要监听所有地址,这将允许您从本地网络上的其他计算机连接,您必须显式绑定到更宽松的地址。试试这个:

    rails server --binding=0.0.0.0
    

    您现在应该看到:

    Listening on 0.0.0.0:3000, CTRL+C to stop
    

    现在您可以从本地网络上的其他地方连接到您的 Rails 应用程序,例如通过浏览到http://192.168.0.111:3000.

    【讨论】:

    • 4.2 中是否有这种变化?我还有其他几个 Rails 4.x 项目,它们仍然绑定到 0.0.0.0...谢谢你,我什至没有想过要查看 rails 本身。
    • 是的,我很确定这是在 4.2.0 中引入的。
    • 无论如何你都可以用 4.2.0 制定这个标准。每次都输入它很烦人。
    • 还有一个快捷方式rails s -b 0.0.0.0
    • @SurgePedroza 如果你想跳过输入rails server --binding=0.0.0.0,看看现在有多少项目使用foreman,并有一个用于服务器的Procfile、sidekiq/resque/redis、Elasticsearch、Guard等. 您可以轻松地将服务器行更改为:ruby web: env bundle exec rails server --binding=0.0.0.0 现在您只需像往常一样输入foreman start 并且您的服务器应该绑定到 0.0.0.0 ip_addr
    猜你喜欢
    • 2012-10-18
    • 2017-01-20
    • 2015-03-24
    • 2021-06-06
    • 2022-09-29
    • 2019-07-08
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多