Cannot find type `Sinatra::Base`archivo de rubí
class StaticApp < Sinatra::Base endarchivo rbs
class StaticApp < Sinatra::Base endcorrer
bundle exec steep check --log-level=fatalresultado
[error] Cannot find type `Sinatra::Base` Diagnostic ID: RBS::UnknownTypeName Yo uso gema steep . Parece que es necesario requerir algunos archivos. Pero
library 'sinatra'no funciona
#<RBS::EnvironmentLoader::UnknownLibraryError: Cannot find type definitions for library: sinatra ([nil])>¿Qué hago mal? Gracias.
Pero
library 'sinatra'no funciona...RBS::EnvironmentLoader::UnknownLibraryError
# Steepfile target :app do repo_path 'vendor/rbs' Cree una estructura de directorios como vendor/rbs/sinatra/0/sinatra.rbs .
La forma en que escribe o genera los contenidos de sinatra.rbs está fuera del alcance de esta respuesta, pero consulte gem_rbs_collection . Gente de Rails, consulte rbs_rails .
Steep está usando un RBS::EnvironmentLoader .
# 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 El EnvironmentLoader puede encontrar una library en gem_sig_path (creo que sería una carpeta sig distribuida en la gema) o en un repository .
# 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 En un Steepfile , los repositorios se configuran a través repo_path .
# Steepfile repo_path 'vendor/rbs'Para la estructura de directorios de un repositorio, tomé https://github.com/ruby/rbs/tree/master/stdlib como ejemplo.
ls -R vendor/rbs activesupport vendor/rbs/activesupport: 0 vendor/rbs/activesupport/0: activesupport.rbs