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

升级Ruby 3.0.0至3.1.0时出现Time::RFC2822_DAY_NAME未初始化常量错误

解决Ruby 3.1.0升级后Time::RFC2822_DAY_NAM未初始化的错误

问题原因

这个错误是由于Ruby 3.1.x对Time类的内置常量做了调整,而你使用的business_time gem版本不兼容Ruby 3.1,导致内部尝试调用未定义的Time::RFC2822_DAY_NAME(报错信息里的DAY_NAM是拼写遗漏)。

解决方案

1. 升级business_time gem(推荐)

这是最根本的解决办法,确保gem版本支持Ruby 3.1:

  • 打开Gemfile,将business_time的版本更新为最新兼容版
  • 执行命令:
    bundle update business_time
    

2. 手动补全缺失常量(临时修复)

如果暂时无法升级gem,可以在Rails项目的初始化文件中手动定义该常量:

  • 在config/initializers目录下新建time_constants.rb文件
  • 添加以下代码:
    # 补全Ruby 3.1中移除的Time常量,兼容business_time旧版本
    Time::RFC2822_DAY_NAME = Date::DAYNAMES unless defined?(Time::RFC2822_DAY_NAME)
    
  • 重启Rails服务器,验证功能是否恢复正常

3. 检查代码中的间接引用

确认你的业务代码中没有直接或间接调用Time::RFC2822_DAY_NAME的逻辑,若有则替换为Date::DAYNAMES(两者内容一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:03