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

升级Ruby与Bundler后出现undefined method `present?' for nil:NilClass错误

解答

根因说明

虽然你没有引入完整的Rails框架,但两个版本的依赖中都包含了activesupport包,这个包是Rails生态里负责提供核心扩展的组件,blank?、present?正是它提供的方法。
旧版的activesupport 4.2.5默认会自动加载所有核心扩展,所以你之前不需要额外配置就能直接调用这两个方法。而升级到activesupport 6.1.3.2后,官方做了拆分优化,默认不再自动加载全量扩展,需要你主动引入需要的模块才会加载对应的方法。

修复方法

找到你应用的入口文件(Sinatra应用通常是app.rb或者config.ru文件),在文件顶部添加一行代码即可:

require 'active_support/core_ext/object/blank'

这行代码只会加载和blank?、present?相关的扩展,不会引入冗余内容,不会增加应用负担。

后续注意事项

如果你代码里还用到了其他非Ruby原生的扩展方法(比如时间、字符串处理相关的工具方法),大概率也是ActiveSupport提供的,遇到类似的报错时,按需引入对应的core_ext下的模块即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:24:06