Redis导致Action Cable错误,本地服务器被自动关闭

Posted

技术标签:

【中文标题】Redis导致Action Cable错误,本地服务器被自动关闭【英文标题】:Redis caused Action Cable error and the local server was automatically shut down 【发布时间】:2021-12-24 23:54:44 【问题描述】:

我有一个 Rails 项目,其中 Action Cable 使用 Redis。 PC环境为Windows 10 + Ubuntu 18。由于我安装了Docker导致Ubuntu无法正常运行,所以我将Ubuntu卸载重新安装。从那时起,我就无法让这个 Rails 项目在本地服务器上运行(通过“rails s”或“foreman s”)。

由于我多次编辑了“redis.service”和“sysctl.conf”,仍然无法解决Redis无法设置最大打开文件数的问题,所以我选择移除Redis重新安装。

之后,虽然可以暂时激活项目(通过“rails s”或“foreman s”),但一旦我点击项目中的超链接(Device以外的任何网页),服务器会自动关闭.通过日志发现自动关机前会出现5次相同的错误信息如下:

22:05:11 web.1     |    from /home/keaton/.rvm/gems/ruby-2.7.3/gems/actioncable-6.1.4.1/lib/action_cable/subscription_adapter/redis.rb:80:in `listen'
22:05:11 web.1     |    from /home/keaton/.rvm/gems/ruby-2.7.3/gems/actioncable-6.1.4.1/lib/action_cable/subscription_adapter/redis.rb:154:in `block in ensure_listener_running'
22:05:11 web.1     | /home/keaton/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/socket.rb:1214:in `__connect_nonblock': Operation now in progress - connect(2) would block (IO::EINPROGRESSWaitWritable)
22:05:11 web.1     |    from /home/keaton/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/socket.rb:1214:in `connect_nonblock'

我该如何解决这个问题?我是一个新手,学习 Ruby on Rails 才三个月。请帮帮我!

【问题讨论】:

【参考方案1】:

您可能想查看 Memurai,而不是在 Docker 中使用 Redis:它是 Redis 的原生 Windows 端口。

免责声明:我在 Memurai 工作。

【讨论】:

如何配置 actioncable 以使用 memurai? Memurai 的配置与 Redis 相同。也就是说,我不知道可操作。对不起。 FWIW - 我根本不需要做太多事情,它适用于标准 redis gem,但我必须在电缆配置中将 localhost 更改为 127.0.0.1

以上是关于Redis导致Action Cable错误,本地服务器被自动关闭的主要内容,如果未能解决你的问题,请参考以下文章

与 ip 绑定后,Action Cable 不工作

Ruby on Rails:如何通过 ngrok 访问 Action Cable?

rails 5 action cable 服务器部署

由 config.action_cable.url 定义的 URL 在被 Vue 前端使用时生成 404

Rails Action Cable:如何授权传入连接?

Capybara 不使用 action_cable