什么是&书信电报;顶部(必需)>&引用;在Ruby堆栈跟踪中是什么意思?

什么是&书信电报;顶部(必需)>&引用;在Ruby堆栈跟踪中是什么意思?,ruby,Ruby,在Ruby 1.9.2堆栈跟踪中,我经常看到给出的方法是,如下面堆栈的这一部分所示。这是什么意思?我的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

在Ruby 1.9.2堆栈跟踪中,我经常看到给出的方法是
,如下面堆栈的这一部分所示。这是什么意思?我的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'
在任何源代码中都找不到abstract-1.0.0
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/spec_set.rb:87:在“物化中的块”中
/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:在“物化”中
/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:“请求的规范”中
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.13/lib/bundler/environment.rb:23:in“请求的规格”
/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`'
:33:在'require'中
:33:在“紧急救援”中
:29:在'require'中

它是文件的顶层,即在需要文件时运行的任何内容。

因此,如果在库的设置过程中出现故障(例如,找不到某个必需的文件),它将像这样显示在堆栈跟踪中。

当我在“Jump Start Sinatra”一书中编写教程时,遇到了这个错误

通过确保运行
sudogem安装
,我消除了这个错误。所以在我的例子中,我有一个
main.rb
,在这个文件中我有这个

require 'sinatra'
require 'sinatra-contrib'
因此,我回到了项目的根目录,运行了
sudogem install sinatra
sudogem install sinatra contrib
,然后我的项目运行良好


你的错误会有所不同,但因为这是我在谷歌上搜索时发现的,我知道其他人也会出于类似的原因来到这里。我提供这个解决方案至少是为了让你朝着正确的方向思考,因为这对我来说很有效

如果所需的一切都是正确的,则可能意味着您正在尝试创建一个具有已存在的模块名称的类。例如,以下文件:

class Test
end
将提出:
”:测试不是类(TypeError)


因为测试隐含着一个模块。

我也有同样的问题。通过使用记事本++将.rb文件编码转换为UTF-8-BOM解决了这个问题。

Nito的答案完全有道理。这是一个堆栈跟踪,你得到一个失败的东西。我通过以下方式运行测试:

bundle exec rspec spec
我得到的是:

An error occurred while loading ./spec/foodie_spec.rb.
Failure/Error: require 'foodie/food'

SyntaxError:
  /Users/honey/Dev/foodie/funnex/lib/funnex/food.rb:17: syntax error, unexpected end-of-input, expecting end
# ./lib/foodie.rb:4:in `require'
# ./lib/foodie.rb:4:in `<top (required)>'
# ./spec/foodie_spec.rb:1:in `require'
# ./spec/foodie_spec.rb:1:in `<top (required)>'
No examples found.


Finished in 0.00002 seconds (files took 0.07998 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
  • foodie_spec
    的第1行,我有
    要求“foodie”
  • foodie.rb的第4行
    我要求“foodie/food”
  • 我在
    foodie/food
    17行出错
Ruby中的堆栈跟踪也是回溯或堆栈回溯

所以“(必需)”部分表示该文件已被处理,因为另一个文件用“require xxxxx”指定了它,对吗?
# ./spec/foodie_spec.rb:1:in `<top (required)>'