Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
¿Cómo configurar Steep para encontrar archivos RBS para una gema fuera de stdlib?
Cannot find type `Sinatra::Base`

archivo de rubí

 class StaticApp < Sinatra::Base end

archivo rbs

 class StaticApp < Sinatra::Base end

correr

 bundle exec steep check --log-level=fatal

resultado

 [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.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Pero library 'sinatra' no funciona... RBS::EnvironmentLoader::UnknownLibraryError

Respuesta corta

 # 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 .

Respuesta larga

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
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda