Ruby 2.7升级至3.1时出现ArgumentError初始化错误
Ruby 2.7升级至3.1时出现ArgumentError初始化错误
看起来你遇到的问题根源是json 1.8.6版本和Ruby 3.x不兼容。Ruby 3.0+对方法参数处理做了严格化调整,而json 1.8.6是2016年的老旧版本,它的JSON.parse方法仅接受1个参数,但依赖它的jmespath gem调用时传入了2个参数,直接触发了你看到的ArgumentError。
解决步骤:
- 显式指定兼容的json版本:你的Gemfile里没有直接声明json版本,它是作为其他gem的依赖被引入的。请在Gemfile中添加适配Ruby 3.x的json版本:
gem 'json', '~> 2.6'
- 更新依赖包:运行bundle命令完成json版本的升级:
bundle update json
- 验证修复效果:再次尝试启动
rails console或运行测试套件,看看初始化时的参数错误是否消失。
额外兼容性检查建议:
既然你升级了Ruby大版本,建议同步检查其他老旧gem的适配情况:
- 你当前使用的
carrierwave-aws 1.5.0,可以确认它是否支持Ruby 3.x,必要时升级到2.x系列的新版本; aws-sdk-core等AWS相关依赖也可以考虑升级到适配Ruby 3的版本,提前规避后续可能出现的其他兼容性问题。
备注:内容来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

