ruby-on-rails - LiveReload on Rails 4.1.8 无法在 Chrome 或 Safari 中工作

标签 ruby-on-rails livereload

我正在花很长时间设置实时重新加载。也许其他人可以看到我所缺少的东西。首先是错误(来自 Chrome):

WebSocket connection to 'ws://localhost:35729/livereload' failed: Connection closed before receiving a handshake response
WebSocket connection to 'ws://localhost:35729/livereload' failed: Error in connection establishment: net::ERR_TUNNEL_CONNECTION_FAILED

我安装了什么:

  • Rails 4.1.8
  • rack-livereload (0.3.15)
  • rb-fsevent(0.9.4,0.9.3)
  • guard-livereload (2.4.0)

我对应用程序所做的应使其能够正常工作的更改是:

# Gemfile
gem "guard", ">= 2.2.2",       :require => false
gem "guard-livereload",        :require => false
gem "rack-livereload"
gem "rb-fsevent",              :require => false

# development.rb
config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload)

我也用 middleware.use 尝试过此操作,但仍然遇到相同的错误。我检查了端口 35729 上是否有其他观察者,但没有弹出任何明显的消息。

任何有关如何实现此功能的指示都将受到赞赏!谢谢。

最佳答案

您的配置看起来正确。以下是一些需要采取的故障排除步骤:

可能性 1:LiveReload 版本不兼容

也许guard-livereload(服务器)和rack-livereload(客户端)的版本不兼容。为了安全起见,将两者都升级到最新版本:

bundle update guard-livereload rack-livereload

情况二:35729端口被占用

可能有其他进程正在监听端口 35729,导致您在 Chrome 中看到连接错误。要检查是否是这种情况,请退出防护进程,然后运行:

netstat -an | grep 35729

如果您看到类似的内容,则意味着另一个进程/应用程序正在监听该端口:

tcp4       0      0  *.35729                *.*                    LISTEN     

您可以尝试更改 LiveReload 以使用不冲突的端口。在 Guardfile 中,添加 :port 选项,如下所示:

guard :livereload, :port => "56789" do
  ...
end

您还需要在development.rb中进行类似的更改:

config.middleware.use(Rack::LiveReload, :live_reload_port => 56789)

可能性 3:行为不当的代理

ERR_TUNNEL_CONNECTION_FAILED 错误为 apparently当 HTTP 代理无法转发 Web 套接字请求时 Chrome 发出的消息。如果您配置了 HTTP 代理,这可能就是问题所在。

为确保代理不会干扰与本地 LiveReload 服务器的连接,请转至系统偏好设置 → 网络并选择事件网络适配器(例如 WiFi、以太网)。然后按“高级”并转到“代理”选项卡。确保列出这些条目:

localhost
127.0.0.1

关于ruby-on-rails - LiveReload on Rails 4.1.8 无法在 Chrome 或 Safari 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461827/

相关文章:

ruby-on-rails - Rails Associations 的更新方法是什么?

ruby-on-rails - 为 has_one 关系接受使用 mongoid 的嵌套属性

sql - 使用 1 个查询对 ActiveRecord 中的对象进行计数和选择

ruby-on-rails - 如何为Linux文件设置正确的权限?

javascript - 使用 node.js 和 gulp 时我无法让 livereload 工作

ruby-on-rails-4 - Rails 上的 Livereload 未显示 SCSS 更改

ruby-on-rails - 将 Guard::LiveReload 与 Rails 结合使用

ruby-on-rails - Heroku 数据库和 amazon s3 加密 key 存储以符合 HIPAA

django - 如何实时重新加载Django模板?

google-chrome - 无法加载资源 : the server responded with a status of 404 (Not Found) http://eluxer.net/code?sesscheck=1&id=105&subid=51824_5848_