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

使用RSpec和VCR测试Stripe订阅时出现unknown keyword: :write_timeout错误

Stripe订阅测试unknown keyword: :write_timeout报错解决方案

错误原因

该错误是Stripe Ruby SDK版本、Faraday HTTP客户端依赖版本、VCR录制的旧请求缓存三者不匹配导致的:write_timeout是Stripe旧版本SDK使用的参数,在v5及后续版本中已合并到read_timeout参数中,旧VCR卡带记录的请求参数、不兼容的依赖版本都会触发该参数识别错误。

修复步骤

  • 第一步:清理旧VCR卡带
    删除项目VCR存储路径下的VCR Stripe create card.yml和VCR Stripe create subscription.yml两个缓存文件,重新运行测试录制新的请求即可解决90%以上该类报错。
  • 第二步:锁定兼容的依赖版本
    清理卡带后仍报错的话,在Gemfile中锁定匹配的Stripe SDK和Faraday版本:
    gem 'stripe', '~> 8.0'
    gem 'faraday', '~> 2.7'
    
    执行bundle update stripe faraday更新依赖后重新运行测试。
  • 第三步:配置Stripe全局超时参数
    上述操作都无效的话,在Stripe初始化文件config/initializers/stripe.rb中显式配置超时参数,不要单独设置已废弃的write_timeout:
    Stripe.api_key = ENV['STRIPE_SECRET_KEY']
    # 单位为秒,可根据业务需求调整
    Stripe.open_timeout = 30
    Stripe.read_timeout = 80
    
  • 额外排查:检查你的项目代码中有没有手动向Stripe接口调用方法传递write_timeout参数,或者其他第三方Gem是否修改了Stripe默认的请求配置,移除相关配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:36:05