Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Nokogiri是根据LibXML版本2.7.7构建的,但动态加载了2.7.3_Ruby On Rails_Ruby_Nokogiri - Fatal编程技术网

Ruby on rails Nokogiri是根据LibXML版本2.7.7构建的,但动态加载了2.7.3

Ruby on rails Nokogiri是根据LibXML版本2.7.7构建的,但动态加载了2.7.3,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,在Rails 3中,我注意到每次调用框架时,无论是从rake、Rails服务器,还是其他任何地方,我都会收到以下警告: Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.3 在Google上搜索会产生一些博客帖子,所有这些帖子都建议使用显式lib和include路径重建Nokogiri。例如: 但是,这并没有解决我的问题 键入nokogiri-v可以得到以下信息: --- warn

在Rails 3中,我注意到每次调用框架时,无论是从
rake
Rails服务器
,还是其他任何地方,我都会收到以下警告:

Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.3
在Google上搜索会产生一些博客帖子,所有这些帖子都建议使用显式lib和include路径重建Nokogiri。例如:

但是,这并没有解决我的问题

键入
nokogiri-v
可以得到以下信息:

--- 
warnings: []

ruby: 
  engine: mri
  version: 1.8.7
  platform: i686-darwin10.4.0
libxml: 
  loaded: 2.7.7
  binding: extension
  compiled: 2.7.7
nokogiri: 1.4.4
这似乎表明我的构建正常,Nokogiri正在加载正确的库版本。那么Rails为什么会抱怨呢


我真的找到了答案,我想在这里分享一下。请参阅下面的答案。

问题在于其他库正在加载早期的libxml版本。我是通过在我的文件中注释内容发现这一点的。具体来说,在我的例子中,RMagick正在加载libxml2.7.3。(它使用libxml读取SVG文件。)

我尝试针对libxml 2.7.7重新构建RMagick,如下所示:

gem install --no-rdoc --no-ri rmagick -- --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-include=/opt/local/libxslt --with-xslt-lib=/opt/local/lib
然而,RMagick似乎并不关心这些旗帜。它再次使用2.7.3构建。(如果有人知道如何针对特定的libxml版本构建RMagick,请分享您的知识。)

最终,我找到了一个半途而废的解决方案。我决定,如果我不能解决这两个gem之间的版本冲突,我至少会选择Nokogiri,它使用了更新版本的libxml。为了做到这一点,我找出了Gemfile中使用Nokogiri的宝石,并将它们放在第一位

所以,我曾经有过这样的经历:

gem 'rmagick', :require => 'RMagick'
gem 'sanitize' # Has Nokogiri as dependency
我现在有这个:

gem 'sanitize' # Has Nokogiri as dependency
gem 'rmagick', :require => 'RMagick'

现在警告已经消失了,RMagick还没有抱怨。免责声明:我在我的应用程序中不使用SVG,因此我尚未确认RMagick与libxml 2.7.7完全兼容。

您也可以
在Bundle.require之前在应用程序的第一行中要求“nokogiri”
,这样您就不必找出其他依赖项。

谢谢!我不知道RMagick正在加载libxml。我也非常感谢!在多次重新编译失败后,这为我解决了问题。谢谢~我在不同的宝石上遇到了同样的问题。评论我的Gemfile中的所有内容并一次恢复它们是关键。在我的情况下,hitimes宝石是罪魁祸首。