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

Ruby on Rails 7.0.0 安装 Devise 报 NoMethodError 错误如何解决

问题根因

你遇到的报错是Devise 4.8.0及更早版本与Rails 7.0不兼容导致的:Rails 7.0移除了ActiveSupport::Dependencies模块下的reference方法,而旧版Devise还在调用这个已废弃的API,所以触发NoMethodError。
你反馈指定版本仍被自动更新,是因为Gemfile中没有设置严格的版本约束,或者执行安装时没有同步更新Gemfile.lock锁版本。

解决方案

操作步骤如下:

  • 第一步:打开项目根目录的Gemfile,找到devise的依赖行,修改为严格约束兼容Rails7的版本:
    gem 'devise', '~> 4.9', '>= 4.9.0'
    
    4.9.0及以上版本的Devise已经完整适配了Rails 7的API变更,不会再出现这个报错。
  • 第二步:在项目根目录执行bundle命令锁定安装指定版本,不要使用单独的gem install devise命令,避免和项目依赖版本冲突:
    bundle install
    
  • 第三步:如果之前已经生成过Devise的配置文件,执行下面的命令更新配置适配新版本即可:
    rails generate devise:install
    
    出现文件冲突提示时输入n即可跳过覆盖你已经修改过的自定义配置。

如果执行完上述操作后依赖仍被锁定在4.8.0版本,直接删除旧的依赖锁文件再重新安装即可:

rm Gemfile.lock
bundle install

内容的提问来源于stack exchange,提问作者Samuel Da Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:00:02