1

我在大学里开发了一些东西,保存到我的 Dropbox 打算继续在家里。这是迎接我的消息:

$ spec graph_spec.rb 
/Users/amadan/.rvm/gems/ruby-1.9.2-rc1/gems/PriorityQueue-0.1.2/ext/priority_queue/CPriorityQueue.bundle: [BUG] Segmentation fault
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

然而,

$ `which spec` graph_spec.rb 
...........................................................................

Finished in 0.046973 seconds

75 examples, 0 failures

这到底是怎么回事?

供参考:

$ which spec
/Users/amadan/.rvm/gems/ruby-1.9.2-rc1/bin/spec

更新:我刚刚注意到那里的 1.8.7 ......它是如何到达那里的?规范文件的顶部说:

$ head `which spec`
#!/Users/amadan/.rvm/rubies/ruby-1.9.2-rc1/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'rspec' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

它在哪里说“运行1.8.7”?!?

4

1 回答 1

0

RVM 很可能正在弄乱您的宝石和红宝石。我建议在清理后的 RVM 安装(仅安装 1.9)上进行测试。

真的是/Users/amadan/.rvm/rubies/ruby-1.9.2-rc1/bin/rubyruby​​ 1.9.2 吗?

其他测试方法是显式运行ruby spec,因此您确定这确实是调用的 1.9.2。

总而言之,Segfaults 确实发生在 ruby​​ 中(尤其是 1.8),有时可以通过稍微重组 ruby​​ 代码来避免。祝你好运 !

于 2011-06-28T21:07:32.377 回答