升级Ruby版本后Rails依赖Gem编译失败问题求助
Rails 7升级时bundle install遇Skylight依赖错误的解决方法
问题根源
这个错误出现在Ruby 2.7.4环境下安装skylight-5.0.1时,核心原因是Ruby 2.7默认绑定的Psych库版本与skylight的解析逻辑不兼容,导致Psych::Parser实例缺失parse方法,进而使extconf.rb无法生成Makefile。
分步解决方案
锁定Psych兼容版本
在Gemfile中添加指定版本的Psych,确保和Ruby 2.7.4兼容:gem 'psych', '~> 3.3.2'升级Skylight到适配版本
skylight-5.0.1对Ruby 2.7的支持存在缺陷,建议升级到5.1及以上版本(已适配Ruby 2.7和Rails 7),修改Gemfile中的对应条目:gem 'skylight', '>= 5.1.0'清理缓存并重新安装依赖
执行以下命令清除旧缓存,避免依赖冲突:bundle clean --force bundle install确认Ruby环境配置
验证rbenv本地版本是否生效:rbenv version输出需显示
2.7.4 (set by [你的项目路径]/.ruby-version);同时检查gem环境路径:gem env home路径应包含
rbenv/versions/2.7.4,确保依赖安装到正确的Ruby版本目录下。
补充排查点
如果执行上述步骤后仍有问题,通过bundle show psych查看当前Psych版本,若未匹配指定的3.3.2版本,执行bundle update psych强制更新该依赖,排除其他gem对旧版本Psych的锁定。
内容的提问来源于stack exchange,提问作者angelov_mm
相关产品推荐
相关产品推荐

