2011-06-13 6 views
24

En Ruby 1.9.2 stack trace Veo con frecuencia el método dado como <top (required)>, como en esta sección de la pila a continuación. ¿Qué significa esto? ¿Mi instalación Ruby está sutilmente rota?¿Qué significa "<top (required)>" en una pila de Ruby?

Could not find abstract-1.0.0 in any of the sources 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/spec_set.rb:87:in `block in materialize' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/spec_set.rb:81:in `map!' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/spec_set.rb:81:in `materialize' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/definition.rb:90:in `specs' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/definition.rb:135:in `specs_for' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/definition.rb:124:in `requested_specs' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/environment.rb:23:in `requested_specs' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/runtime.rb:11:in `setup' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler.rb:107:in `setup' 
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/setup.rb:14:in `<top (required)>' 
<internal:lib/rubygems/custom_require>:33:in `require' 
<internal:lib/rubygems/custom_require>:33:in `rescue in require' 
<internal:lib/rubygems/custom_require>:29:in `require' 

Respuesta

15

Es el nivel superior de un archivo, es decir, todo lo que se ejecuta cuando se requiere el archivo.
Entonces, si algo falla durante la configuración de una biblioteca (por ejemplo, no se encuentra algún archivo requerido), aparecerá en la pila de esa manera.

+1

Entonces, la parte "(requerida)" significa que el archivo fue procesado porque otro archivo lo especificó con "require xxxxx", ¿verdad? – iX3

0

Me encontré con este error de <top (required)> cuando estaba haciendo el tutorial en el libro "Jump Start Sinatra".

Me libré del error asegurándome de ejecutar sudo gem install <GEM_IN_YOUR_FILE>. Así que en mi caso he tenido un main.rb y en ese archivo que he tenido este

require 'sinatra' 
require 'sinatra-contrib' 

Así que volvió a entrar en la raíz de mi proyecto y corrieron sudo gem install sinatra y sudo gem install sinatra-contrib y luego mi proyecto funcionó bien.

Sus errores pueden variar, pero como esto es lo que encontré cuando busqué en Google, sé que otros vendrán aquí por motivos similares. Y ofrezco esta solución para al menos hacerle pensar en la dirección correcta, ya que esto funcionó para mí.

0

Si todo lo que necesita es correcto, podría significar que está intentando crear una clase con un nombre que ya existe para un módulo. Por ejemplo, el siguiente archivo:

class Test 
end 

elevará: <top (required)>': Test is not a class (TypeError)

Debido a que la prueba es implícitamente un módulo.

0

Tuve el mismo problema. Lo resolvió convirtiendo los archivos .rb que codifican a UTF-8-BOM usando Notepad ++.