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

升级至Rails 7.0.3.1后,开发环境执行Rake任务触发生产资产编译报错

问题原因解析

核心问题:生产环境配置被意外加载

你的错误来自config/environments/production.rb第8行的ENV.fetch("APPLICATION_HOST"),这说明在开发环境执行Rake任务时,生产环境的配置文件被加载了——而开发环境压根没设置这个环境变量,所以触发了KeyError。

为什么Rails 7会出现这个情况?

  • Rails 7资产预编译逻辑变更:和Rails 6相比,Rails 7对asset:precompile任务的依赖关系、环境加载规则做了调整。现在即使在开发环境执行依赖:environment的Rake任务,也可能触发资产预编译相关的钩子流程,而这些流程错误地拉取了生产环境配置。
  • 项目自定义/第三方工具的影响:从输出里的Precompiling assets for local和自动生成的Git提交(Add precompiled assets for local)来看,你项目里应该有自定义的资产预编译脚本,或者用了自动处理资产提交的第三方gem。在Rails 7的任务触发逻辑变化后,这些脚本/工具没能正确判断当前运行环境,导致开发环境下也启动了生产环境的资产预编译流程,进而加载了production.rb的配置。

为什么任务最后还能成功执行?

异常被捕获了——要么是你的自定义脚本里加了rescue逻辑,要么是Rails 7的任务处理流程中,某个环节捕获了这个KeyError并继续执行后续代码,所以最后你的测试任务还是正常输出了Environment is development。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:09:17