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

能否不在Ruby源码中写sig,仅通过RBI文件使用Sorbet做静态类型检查?

Sorbet 仅依赖RBI文件做静态类型检查的方案说明

完全可以只通过 sorbet 目录下的 RBI 文件补充类型签名,无需在业务源代码中添加任何 sig 相关代码,这是 Sorbet 原生支持的使用模式,适合你需要低侵入接入类型检查的场景。

实操步骤

  • 先执行 srb init 完成项目 Sorbet 初始化,生成的默认 sorbet 目录已经包含 Ruby 标准库、项目第三方依赖的自动生成 RBI 文件,整个过程不会修改任何业务代码
  • 你可以自定义单独的 RBI 目录存放业务代码的类型签名,比如 sorbet/rbi/business/,所有业务类、方法、常量的签名都可以统一写到对应 RBI 文件中,写法和直接写在源文件里的 sig 完全一致,示例如下:
# sorbet/rbi/business/user.rbi
class User
  sig { returns(String) }
  def nickname; end

  sig { params( post_id: Integer, content: String ).returns(Post) }
  def create_post(post_id, content); end
end
  • 本地执行类型检查时直接运行 srb tc 即可,Sorbet 会自动合并加载所有 sorbet 目录下的 RBI 签名与业务源代码,完成全量类型校验,整个过程完全不影响现有业务代码,同事不会感知到你本地的类型检查操作

注意事项

如果你本地同步了最新业务代码后出现类型误报,优先检查是否业务侧修改了方法定义、参数结构,同步更新对应 RBI 文件的签名即可。后续要推广方案时,可以先把 RBI 目录提交到代码仓库,默认不开启 CI 侧的类型检查门禁,等团队达成共识后再逐步开启校验流程,整体接入阻力极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:36:06