如何拆分Rails5 Web和Actioncable服务器[使它们作为单独的进程运行]

Bra*_*riy 5 ruby-on-rails ruby-on-rails-5 actioncable

目前,我的Web和Websocket服务器在同一进程中运行。我的问题是我如何在没有动作电缆服务器的情况下启动Web服务器,但仍能够在单独的过程中向动作电缆服务器的客户端广播消息?

在Rails5 beta中使用动作电缆,我正在这样做,mount ActionCable.server => '/cable'而只需删除这条线,就可以实现我想要的功能。但是现在它已经自动安装了...

我没有运气尝试过'-C'命令行选项。

Ram*_*ani 0

为了将操作电缆作为单独的进程运行,我们可以遵循https://guides.rubyonrails.org/v5.0/action_cable_overview.html中的第 8 节运行独立电缆服务器

步骤1:删除以下行config/routes.rb

安装 ActionCable.server => "/cable"

步骤2: 在里面添加以下行config/application.rb

config.action_cable.mount_path = nil

步骤 3:确保内部设置了操作电缆 url config/environments/development.rb,并使用操作电缆端口 3001

config.action_cable.url = "ws://localhost:3001/cable"

步骤4:添加cable/config.ru包含以下内容的文件

需要 ::File.expand_path('../../config/environment', __FILE__)
Rails.application.eager_load!

运行 ActionCable.server

第 5 步:在一个终端选项卡中运行 Rails 服务器

导轨

步骤 6:在另一个终端选项卡中运行操作电缆服务器

捆绑执行 puma -p 3001 电缆/config.ru

通过这种方式,您可以在 3000 端口运行 Rails 服务器,在 3001 端口运行 Action Cable 服务器