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

Rails 5.1.7中cache fetch方法报错:参数数量不匹配

Rails.cache.fetch 调用触发参数数量错误的解决办法

执行以下Rails缓存代码:

Rails.cache.fetch('some_other_key', expires_in: 24.hours) { 50 + 50 }

出现错误:

ArgumentError (wrong number of arguments (given 1, expected 2))

环境信息

  • Rails版本:Rails 5.1.7
  • 缓存配置:config.cache_store = :memory_store,切换为redis store后错误依然存在

错误根源分析

从完整调用栈可追踪到,错误并非来自Rails缓存本身,而是meta_request gem(版本0.8.2)的兼容性问题:
在meta_request/event.rb的sanitize_hash方法中,调用Rails的normalize_key方法时只传入了1个参数,但该方法需要2个参数,从而触发参数数量不匹配的错误。

解决方案

  • 升级meta_request gem
    旧版本的meta_request与Rails 5.1.x存在适配问题,更新到兼容版本即可解决。执行命令:
    bundle update meta_request
    
  • 临时禁用meta_request
    如果暂时无法升级,可在开发环境中临时注释掉该gem:
    修改Gemfile:
    group :development do
      # gem 'meta_request'
      # 其他开发环境依赖...
    end
    
    执行bundle install后重启服务器。

内容的提问来源于stack exchange,提问作者Prathibha G Sampath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:37:32