Rails 4.2升级至6.0时遇bundler版本相关循环报错如何解决
Rails 4.2升级到6.0版本循环报错解决方案
核心根因
当前项目的Gemfile.lock是用bundler 1.17.3版本生成的,文件内锁定了bundler版本,但你本地环境没有安装该版本,同时Gemfile中又要求bundler >= 2.0.0,两个版本要求冲突导致每次执行bundle命令都触发校验报错,陷入死循环。
标准解决步骤
- 第一步:先安装
Gemfile.lock锁定的bundler版本,保证bundle命令可正常运行
gem install bundler:1.17.3
- 第二步:指定用1.17.3版本的bundler同时升级bundler本身和rails依赖,一次性解决两个版本锁定问题
bundle _1.17.3_ update --bundler rails
bundle _版本号_是bundler的官方指定版本运行语法,可跳过全局默认版本的校验逻辑。
- 第三步:执行以下命令验证版本是否符合预期
rails -v # 预期输出6.0.x系列版本号 bundle -v # 预期输出>=2.0.0的版本号
备选强制升级方案(仅当标准步骤出现依赖冲突时使用,需提前备份文件)
操作前务必先备份原有Gemfile.lock,方便回滚
- 备份旧版本锁定文件
cp Gemfile.lock Gemfile.lock.rails4.bak
- 删除旧的锁定文件,解除所有版本绑定
rm Gemfile.lock
- 重新安装所有依赖,生成适配Rails 6.0的新锁定文件
bundle install
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

