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

M1 Mac执行rackup启动Ruby应用报错uninitialized constant Dry::Validation::Contract

问题根因

你当前使用的dry-validation版本为0.12.2,属于0.x旧版本分支,Dry::Validation::Contract是dry-validation 1.0及以上版本才推出的核心API,旧版本不存在这个常量,因此运行时触发NameError,该问题和M1芯片、MacOS运行环境无关。

解决方案

有两种可选修复方案,可根据项目实际情况选择:

方案1:升级dry-validation到支持Contract的版本

  • 修改Gemfile中dry-validation的声明,指定兼容版本:
    gem 'dry-validation', '~> 1.10'
    
  • 执行命令升级依赖:
    bundle update dry-validation
    
  • 升级后需同步检查项目中dry-monads、dry-transaction等关联依赖的版本兼容性,避免出现新的依赖冲突。

方案2:兼容旧版本,调整为0.x分支对应的API写法

如果项目暂时无法升级dry-validation版本,可将原有Contract写法替换为旧版本支持的Schema写法,示例如下:

# 0.x版本校验规则定义示例
UserValidateSchema = Dry::Validation.Schema do
  required(:username).filled(:str?)
  required(:email).filled(:str?, format?: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i)
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03