从控制台发出ActionCable.server.broadcast

40

我可以在控制器中使用以下代码,但无法在控制台中使用(两者均为开发环境)。 我正在使用Rails 5.0.0.beta2。

ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'

控制台:

>> ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'
[ActionCable] Broadcasting to example_channel: {:message=>"<p>Test</p>"}
=> []

我该如何在控制台中使用它?

1个回答

88

在开发模式下,ActionCable 的默认行为是使用 async 适配器,该适配器仅在同一进程内运作。若要进行跨进程广播,则需要切换到 redis 适配器。

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

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

production: *redis
development: *redis
test: *redis

我在我的Mac上遇到了Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)的错误。:( - Yakob Ubaidi
1
@YakobUbaidi,你是否已经安装并运行了最新版本的Redis,并与你的Rails服务器同时运行? - sam
4
尝试执行 brew install redis,然后输入以下命令:redis-server /usr/local/etc/redis.conf - sekrett
我仍然收到此错误 NoMethodError: undefined method `fetch' for nil:NilClass - Tim Kretschmer
3
谢谢您的回答!您还需要确保在您的 Gemfile 中包含 gem 'redis'。 - Sebastian Kim
太好了,谢谢!这是我遇到的问题的解决方法,基本上我无法从我的工作进程中进行广播并同步我的视图。 - d1jhoni1b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接