Ответ 1
Это верхний уровень файла, то есть все, что запускается, когда требуется файл.
Поэтому, если что-то не удается при настройке библиотеки (например, какой-то требуемый файл не найден), он будет отображаться в такой же таблице.
В трассировке стека 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'
Это верхний уровень файла, то есть все, что запускается, когда требуется файл.
Поэтому, если что-то не удается при настройке библиотеки (например, какой-то требуемый файл не найден), он будет отображаться в такой же таблице.
Я столкнулся с этой ошибкой <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, я знаю, что другие придут сюда по аналогичным причинам. И я предлагаю это решение, по крайней мере, заставляя вас думать в правильном направлении, поскольку это сработало для меня.
Если все, что вам нужно, является правильным, это может означать, что вы пытаетесь создать класс с именем, которое уже существует для модуля. Например, следующий файл:
class Test
end
Поднимет:
<top (required)>': Test is not a class (TypeError)
Потому что Test неявно является модулем.
У меня была та же проблема. Решил его, преобразовывая кодировку .rb файлов в UTF-8-BOM с помощью Notepad ++.