使用nokogiri时,Ruby失败了

时间:2011-08-30 19:36:42

标签: ruby-on-rails ruby nokogiri

我正在为我的应用程序设置另一个开发人员,我遇到了一个看起来非常低级的Ruby问题。该应用程序在我的机器上运行得非常好,但在其他开发人员上运行不正确。

Sunspot正在使用Nokogiri进行搜索索引。

Ruby由RVM安装(对于我和其他开发人员)。我们尝试过不同版本的Ruby 1.9.2和不同版本的nokogiri。

我怀疑Ruby构建存在问题。这个问题可能与环境有关吗?你如何解决这样的问题?

当运行“rake sunspot:solr:start”时,nokogiri在Ruby中失败并出现以下错误:


**编辑**

我们已经确定了nokogiri 1.4.7(以适应一些错误修复)并在下面收到“rb_gc()上的”跨线程违规“错误。当我们使用“rails s”启动服务器时,我们会收到此错误。我将用nokogiri 1.4.4离开回溯,以帮助调查。


这是在Nokogiri 1.4.4:

Users/fredyates/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle: [BUG] Segmentation fault
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]

-- control frame ----------
c:0034 p:-542802226 s:0105 b:0105 l:000104 d:000104 TOP   
c:0033 p:---- s:0103 b:0103 l:000102 d:000102 CFUNC  :require
c:0032 p:0186 s:0099 b:0099 l:000098 d:000098 TOP    /Users/fredyates/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.4.4/lib/nokogiri.rb:13
c:0031 p:---- s:0097 b:0097 l:000096 d:000096 FINISH
c:0030 p:---- s:0095 b:0095 l:000094 d:000094 CFUNC  :require

...

-- C level backtrace information -------------------------------------------

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

在nokogiri 1.4.7中:

  

[BUG] rb_gc()(null)

上的跨线程违规      

zsh:abort rake sunspot:solr:start

对我而言,这看起来像Ruby问题。

nokogiri -v(对我来说):

---
warnings: []
nokogiri: 1.4.7
ruby:
  version: 1.9.2
  platform: x86_64-darwin10.7.4
  description: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.4]
  engine: ruby
libxml:
  binding: extension
  compiled: 2.7.8
  loaded: 2.7.8

nokogiri -v(对于其他开发者)

--- 
warnings: []
nokogiri: 1.4.7
ruby: 
  version: 1.9.2
  platform: x86_64-darwin10.7.0
  description: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]
  engine: ruby
libxml: 
  binding: extension
  compiled: 2.7.8
  loaded: 2.7.8

2 个答案:

答案 0 :(得分:0)

我前一段时间遇到了一个类似(并且令人烦恼)的问题。您可以尝试使用rvm gemset来查看是否有帮助。我记得虽然我需要核武器并重新安装('rvm implode'会做核武器)。

这也可能是32位与64位编译问题。如果这是在Snow Leopard或Lion Mac上,他们可能会尝试将ARCH_FLAGS =“ - arch x86_64”添加到他们的.bash_login文件或等效文件中(假设尚未定义)。

答案 1 :(得分:0)

这可能与Alex关于32位与64位的评论有关,但正在运行gem pristine nokogiri为我解决了这个问题。