Подтвердить что ты не робот

Что означает "<top (обязательно)>" в трассировке стека Ruby?

В трассировке стека Ruby 1.9.2 я часто вижу метод, указанный как <top (required)>, как в этом разделе ниже. Что это значит? Устанавливается ли моя 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'
4b9b3361

Ответ 1

Это верхний уровень файла, то есть все, что запускается, когда требуется файл.
Поэтому, если что-то не удается при настройке библиотеки (например, какой-то требуемый файл не найден), он будет отображаться в такой же таблице.

Ответ 2

Я столкнулся с этой ошибкой <top (required)>, когда я делал учебник в книге "Jump Start Sinatra".

Я избавился от ошибки, убедившись, что я побежал sudo gem install <GEM_IN_YOUR_FILE>. Поэтому в моем случае у меня был main.rb, и в этом файле у меня был этот

require 'sinatra'
require 'sinatra-contrib'

Итак, я вернулся в корень моего проекта и запустил sudo gem install sinatra и sudo gem install sinatra-contrib, а затем мой проект работал нормально.

Ваши ошибки будут отличаться, но поскольку это то, что я нашел при поиске в Google, я знаю, что другие придут сюда по аналогичным причинам. И я предлагаю это решение, по крайней мере, заставляя вас думать в правильном направлении, поскольку это сработало для меня.

Ответ 3

Если все, что вам нужно, является правильным, это может означать, что вы пытаетесь создать класс с именем, которое уже существует для модуля. Например, следующий файл:

class Test
end

Поднимет:  <top (required)>': Test is not a class (TypeError)

Потому что Test неявно является модулем.

Ответ 4

У меня была та же проблема. Решил его, преобразовывая кодировку .rb файлов в UTF-8-BOM с помощью Notepad ++.