Windows系统下Ruby on Rails 6使用Redis配置Action Cable连接失败求助
问题排查与解决方案
- Redis版本不兼容:你当前使用的Redis 2.4.6属于多年前的停止维护版本,Rails 6的Action Cable要求Redis最低版本为2.8及以上,旧版本无法支持Action Cable所需的发布订阅功能,是本次问题的最高概率诱因。直接卸载旧版本,安装最新的Windows兼容版Redis即可解决。
- cable.yml配置语法错误:YAML对缩进严格要求,你给出的
config/cable.yml配置中,development块下的adapter、url字段没有缩进2个空格,会导致Rails无法正确读取Redis配置,修正后示例如下:
development: adapter: redis url: redis://localhost:6379/1 test: adapter: test production: adapter: redis url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> channel_prefix: actioncable_test_production
- 前端导入逻辑缺失:Rails 6默认使用Webpacker管理前端资源,需要确认
app/javascript/packs/application.js中存在导入channels的代码,否则前端不会触发WebSocket连接逻辑:
import "channels"
- Redis连通性校验:在项目根目录执行
rails c进入Rails控制台,输入Redis.new(url: 'redis://localhost:6379/1').ping,如果返回值不是PONG,需要检查Windows防火墙是否拦截了6379端口,或者Redis服务是否正常启动。
注:Redis启动时提示的
Open data file dump.rdb: No such file or directory属于持久化文件缺失警告,不影响基础的缓存、发布订阅功能,无需作为本次问题的排查重点。
内容的提问来源于stack exchange,提问作者rererbit
相关产品推荐
相关产品推荐

