来自控制台的ActionCable.server.broadcast

win*_*yer 32 ruby-on-rails ruby-on-rails-5 actioncable

我可以在控制器中使用以下代码,但不能在控制台中使用(两个开发环境).我正在使用Rails 5.0.0.beta2.

ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'
Run Code Online (Sandbox Code Playgroud)

控制台:

>> ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'
[ActionCable] Broadcasting to example_channel: {:message=>"<p>Test</p>"}
=> []
Run Code Online (Sandbox Code Playgroud)

我怎样才能在控制台中使用它?

小智 67

在开发模式下,ActionCable的默认行为是使用async适配器,该适配器仅在同一进程中运行.对于进程间广播,您需要切换到redis适配器.

要在开发模式下启用redis,您需要编辑config/cable.yml:

redis: &redis
  adapter: redis
  url: redis://localhost:6379/1

production: *redis
development: *redis
test: *redis
Run Code Online (Sandbox Code Playgroud)

  • 尝试`brew install redis`,然后:`redis-server/usr/local/etc/redis.conf` (3认同)
  • 谢谢你的回答!您还应该确保在Gemfile中包含gem'redis'. (3认同)