You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Rails 5.2.8.1升级至6.0.3遇依赖冲突问题求助

解决Ruby与Rails升级中的依赖冲突问题

问题核心

升级Ruby到3.1.2、Rails到6.0.3时,bundle install出现actionpack版本冲突,根源是devise_token_auth (=1.0.0)的依赖链限制了railties版本必须低于6.0,而Rails 6.0.3要求railties 6.0.3,直接导致actionpack版本矛盾。

错误详情:

$ bundle
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies.....
Bundler could not find compatible versions for gem "actionpack":
  In snapshot (Gemfile.lock):
    actionpack (= 5.2.8.1)

  In Gemfile:
    rails (~> 6.0.3) was resolved to 6.0.3, which depends on
      actionpack (= 6.0.3)

    devise_token_auth (= 1.0.0) was resolved to 1.0.0, which depends on
      devise (> 3.5.2, < 4.6) was resolved to 4.5.0, which depends on
        railties (>= 4.1.0, < 6.0) was resolved to 5.2.8.1, which depends on
          actionpack (= 5.2.8.1)

Deleting your Gemfile.lock file and running `bundle install` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.


$ rails s
Could not find gem 'rails (~> 6.0.3)' in locally installed gems.
The source contains the following gems matching 'rails':
  * rails-5.2.8.1
Run `bundle install` to install missing gems.

解决方案

1. 升级devise_token_auth到兼容Rails 6的版本

打开项目的Gemfile,把devise_token_auth的版本限制更新为支持Rails 6的版本,比如:

gem 'devise_token_auth', '>= 1.1.0'

(devise_token_auth 1.1.0及以上版本开始支持Rails 6,同时会拉取兼容的devise版本)

2. 清理旧依赖锁文件,重新解析依赖

  • 删除项目根目录的Gemfile.lock文件
  • 执行命令重新安装依赖:
bundle install

3. 确保Ruby版本正确配置

  • 确认本地已安装Ruby 3.1.2(可通过rbenv、rvm等版本管理工具安装)
  • 更新项目根目录的.ruby-version文件内容为:
3.1.2

4. 启动服务时使用bundle exec

避免本地全局gem版本干扰,启动服务时执行:

bundle exec rails s

5. 后续兼容检查

升级完成后,检查项目中其他gem是否兼容Ruby 3.1.2和Rails 6.0.3,若有其他依赖冲突,逐一升级对应gem到兼容版本即可。

内容的提问来源于stack exchange,提问作者Stefano Rueda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:55:28