Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

337
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!