【问题标题】:Access local host from another machine on network in rails 4.2在rails 4.2中从网络上的另一台机器访问localhost
【发布时间】:2015-10-03 21:14:12
【问题描述】:

根据这个post,为了从同一网络上的另一台机器访问本地服务器,您需要使用0.0.0.0:3000作为rails 4.2中localhost的地址。如果我用rails s -b 0.0.0.0 -p 3000 启动服务器,我确实可以从另一台机器访问,使用主机IP 地址后跟:3000。但是,资产未显示。我尝试在 development.rb 中设置 config.asset_host = '0.0.0.0:3000' 并重新启动服务器,但这没有帮助。

那么我如何从远程机器加载资产?控制台显示以下错误

GET http://localhost:3000/assets/application.css net::ERR_CONNECTION_REFUSED
192.168.0.57/:24 
GET http://localhost:3000/assets/application.js net::ERR_CONNECTION_REFUSED
192.168.0.57/:83 
GET http://localhost:3000/assets/infographic.png net::ERR_CONNECTION_REFUSED
192.168.0.57/:106 
GET http://localhost:3000/assets/analysis-thumb.png net::ERR_CONNECTION_REFUSED
192.168.0.57/:121 
GET http://localhost:3000/assets/chart-thumb.png net::ERR_CONNECTION_REFUSED
localhost:3000/images/favicon.ico:1 
GET http://localhost:3000/images/favicon.ico net::ERR_CONNECTION_REFUSED
gingerEditor.min.js:21 
Running Ginger Widget  version 0.1.0.585
localhost:3000/images/favicon.ico:1 
GET http://localhost:3000/images/favicon.ico net::ERR_CONNECTION_REFUSED

在这种情况下,主机位于 192.168.0.57:3000。服务器日志显示页面加载在 192.168.0.9 即Started GET "/" for 192.168.0.9

【问题讨论】:

  • 你为什么不尝试绑定到主机 IP 而不是 0.0.0.0 即。 rails s -b -p 3000
  • 我试过了,谢谢,但资产仍然无法加载。
  • 尝试直接调用远程服务器上的一些资产文件,如果你在生产环境中运行,你的网络服务器不提供静态资产......
  • 会不会是资产预编译的问题?你为什么不试试rake assets:precompile。虽然在开发环境中应该不成问题。
  • 我试过rake assets:precompile,但这没有帮助。我几乎可以肯定是在开发模式下运行,config/environments/development.rb 在服务器启动时执行。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

如果您有 LINUXUNIX 发行版,请打开终端并点击

ifconfig

然后找到inet地址,例如。

inet 192.168.0.113 netmask 0xffffff00 broadcast 192.168.0.255 

然后在同一网络的另一台机器上,你可以在浏览器中点击下面

192.168.0.113:3000

现在您可以在不同的机器上运行您的应用程序了。

希望这会对你有所帮助。

【讨论】:

  • 我已经尝试过了,网站加载但资产没有。
  • 是在development env 做的吗?请尝试在development.rb 中使用此config.serve_static_assets = true
  • 我试过 config.serve_static_assets=true 但没有帮助。
  • 好的。请打开浏览器的控制台并清除错误,然后刷新页面并在此处发布错误列表。
  • 好主意。我无法在评论中正确格式化输出,因此已将其添加到上面的主要问题中。
【解决方案2】:

我通过将 config.asset_host 设置为主机地址解决了这个问题。因此,如果主机是192.168.0.17,那么在config/development.rb 中,您需要以下行:

config.asset_host = '192.168.0.17:3000'

这并不理想,这意味着您每次想要打开开发服务器时都需要更改您的development.rb 文件,方法是将其绑定到0.0.0.0:3000

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2015-03-15
    • 1970-01-01
    • 2020-07-06
    • 2016-09-15
    • 2011-11-11
    • 2020-03-20
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多