首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置陡峭以找到stdlib之外的gem的RBS文件?

如何配置陡峭以找到stdlib之外的gem的RBS文件?
EN

Stack Overflow用户
提问于 2021-09-22 13:22:10
回答 1查看 516关注 0票数 4
代码语言:javascript
复制
Cannot find type `Sinatra::Base`

ruby文件

代码语言:javascript
复制
class StaticApp < Sinatra::Base
end  

rbs文件

代码语言:javascript
复制
class StaticApp < Sinatra::Base
end  

代码语言:javascript
复制
bundle exec steep check --log-level=fatal

结果

代码语言:javascript
复制
[error] Cannot find type `Sinatra::Base`
Diagnostic ID: RBS::UnknownTypeName 

我用steep宝石。似乎需要一些文件。但

代码语言:javascript
复制
library 'sinatra' 

不起作用。

代码语言:javascript
复制
#<RBS::EnvironmentLoader::UnknownLibraryError: Cannot find type definitions for library: sinatra ([nil])>

我做错什么了?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-12-12 05:59:06

但是library 'sinatra'不工作..。RBS::EnvironmentLoader::UnknownLibraryError

简短回答

代码语言:javascript
复制
# Steepfile
target :app do
  repo_path 'vendor/rbs'

创建一个类似于vendor/rbs/sinatra/0/sinatra.rbs的目录结构。

您如何编写或生成sinatra.rbs的内容超出了这个答案的范围,但是请查看集合。Rails人员,请参阅钢轨

长答案

陡峭使用RBS::EnvironmentLoader

代码语言:javascript
复制
# steep-0.47.0/lib/steep/project/target.rb:54
loader = RBS::EnvironmentLoader.new(core_root: core_root_path, repository: repo)
options.libraries.each do |lib|
  name, version = lib.split(/:/, 2)
  loader.add(library: name, version: version)
end

EnvironmentLoader可以在gem_sig_path (我认为这将是一个分布在gem中的sig文件夹)或repository中找到一个sig

代码语言:javascript
复制
# rbs-1.7.1/lib/rbs/environment_loader.rb:68
def has_library?(library:, version:)
  if self.class.gem_sig_path(library, version) || repository.lookup(library, version)
    true
  else
    false
  end
end

Steepfile中,存储库是通过repo_path配置的。

代码语言:javascript
复制
# Steepfile
repo_path 'vendor/rbs'

对于存储库的目录结构,我以https://github.com/ruby/rbs/tree/master/stdlib为例。

代码语言:javascript
复制
ls -R vendor/rbs
activesupport

vendor/rbs/activesupport:
0

vendor/rbs/activesupport/0:
activesupport.rbs
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69285104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档