2011-06-13 189 views
24

在Ruby 1.9.2堆棧跟蹤中,我經常看到給出的方法爲<top (required)>,如下面的堆棧本節所述。這是什麼意思?我的Ruby安裝是否微妙破碎?「<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' 

回答

15

它是文件的頂層,即無論在需要文件時運行。
因此,如果在設置一個庫期間失敗(例如找不到某個需要的文件),它會像這樣在堆棧跟蹤中出現。

+1

所以「(必填)」部分意味着該文件已被處理,因爲另一個文件用「require xxxxx」指定它,是嗎? – iX3 2012-11-13 19:10:11

0

我在做「Jump Start Sinatra」一書中的教程時碰到了這個錯誤<top (required)>

我擺脫了錯誤,確保我運行了sudo gem install <GEM_IN_YOUR_FILE>。所以,在我的情況我有一個main.rb並在該文件我有這個

require 'sinatra' 
require 'sinatra-contrib' 

於是我又回到我的項目的根目錄並運行sudo gem install sinatrasudo gem install sinatra-contrib,然後我的項目運行良好。

您的錯誤會有所不同,但因爲這是我在Google上搜索時發現的,所以我知道其他人也會因爲類似的原因來到這裏。我提供這個解決方案,至少讓你在正確的方向思考,因爲這對我有效。

0

如果你需要的東西都是正確的,那可能意味着你正在嘗試創建一個名稱已經存在的模塊類。例如以下文件:

class Test 
end 

將提高: <top (required)>': Test is not a class (TypeError)

因爲測試是隱含的模塊。

0

我有同樣的問題。使用Notepad ++將.rb文件編碼轉換爲UTF-8-BOM解決了這個問題。

相關問題