我正在构建一个使用Nokogiri gem的rails引擎,我在MacOS 10.7和10.8中的开发设置遇到了麻烦:
为了使Nokogiri在我的设置中正常工作,我更新了libxml和libxslt库:brew update
brew install libxslt
brew upgrade libxml2
gem uninstall nokogiri
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28
和Nokogiri工作正常,如果我使用它在一个"常规"的rails应用程序(包括它在Gemfile,运行bundle install)。
问题出现时,我试图使用Nokogiri从Rails引擎,我正在构建和使用从我的应用程序作为一个宝石。
在gemspec:s.add_dependency 'nokogiri' # XML parsing
我还在Gem的Gemfile的顶部尝试了以下操作:
gem 'nokogiri'
当我启动一个使用Rails引擎gem的应用程序时,我得到以下警告:
WARNING: Nokogiri was built against LibXML version 2.9.0, but has dynamically loaded 2.7.8
我如何配置gem和/或捆绑器和/或Rails使用正确版本的Nokogiri和libxml和libxslt ?
同样,这是nokogiri -v
# Nokogiri (1.5.9)
---
warnings: []
nokogiri: 1.5.9
ruby:
version: 1.9.3
platform: x86_64-darwin12.3.0
description: ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]
engine: ruby
libxml:
binding: extension
compiled: 2.9.0
loaded: 2.9.0
把你的Rails Engine gem放在应用的Gemfile的顶部。然后,在Rails引擎的gemspec和Gemfile中,确保在其他使用libxml的gem(如pg)之前有nokogori。