如何配置Steep以加载标准库外gem的RBS类型定义文件?
问题根源
你遇到的两次报错核心原因一致:Sinatra不属于Ruby官方标准库范围,默认没有内置RBS类型定义,直接在Steepfile中声明library 'sinatra'也找不到未提前配置的第三方类型包。
完整配置流程
- 初始化RBS集合配置
在项目根目录执行命令:rbs collection init
执行后会生成rbs_collection.yaml文件,该文件用于管理所有第三方gem的RBS类型依赖。 - 新增Sinatra类型依赖
打开rbs_collection.yaml,在gems配置段下添加如下内容:- name: sinatra - 拉取第三方类型定义
执行命令完成类型文件安装:rbs collection install
该命令会自动从公共类型仓库拉取Sinatra对应的RBS定义到本地。 - 调整Steepfile配置
在你的Steepfile中添加以下配置,开启RBS集合加载:
无需再单独添加collection '.'library 'sinatra'配置,RBS集合会自动加载所有已配置的第三方gem类型。 - 重新执行类型检查
运行原有检查命令即可:bundle exec steep check --log-level=fatal
通用扩展方案
后续其他第三方gem出现同类未知类型报错时,都可以按照上述流程,在rbs_collection.yaml的gems段添加对应gem名称,再执行rbs collection install即可完成类型加载。
内容的提问来源于stack exchange,提问作者gayavat
相关产品推荐
相关产品推荐

