1

在将我的 ruby​​ 更新到 1.9.3 并将 rails 更新到 3.2.3 之后,我一直在尝试遵循RailsApp Projects devise、rspec 和 cucumber的教程,并且在步骤中尝试 cucumber 时遇到了问题

rake cucumber

并得到一个 rake aborted 错误

dlopen(/Users/Aurelien/.rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /opt/local/lib/libiconv.2.dylib
  Referenced from: /Users/Aurelien/.rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.bundle
  Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0 - /Users/Aurelien/.rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.bundle

任何人都遇到了类似的问题并找到了解决方案,这将有很大帮助。当前的gem文件:

gem 'rails', '3.2.3'
gem 'sqlite3'
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem "rspec-rails", ">= 2.9.0.rc2", :group => [:development, :test]
gem "factory_girl_rails", ">= 3.1.0", :group => [:development, :test]
gem "email_spec", ">= 1.2.1", :group => :test
gem "cucumber-rails", ">= 1.3.0", :group => :test
gem "capybara", ">= 1.1.2", :group => :test
gem "database_cleaner", ">= 0.7.2", :group => :test
gem "launchy", ">= 2.1.0", :group => :test
gem "devise", ">= 2.1.0.rc"
gem "cancan", ">= 1.6.7"
gem "rolify", ">= 3.1.0"
gem "bootstrap-sass", ">= 2.0.1"
gem "nokogiri"

在 features/support/env.rb 中

require 'cucumber/rails'
.
.
.
Capybara.default_selector = :css
.
.
.
ActionController::Base.allow_rescue = false
.
.
.
begin
  DatabaseCleaner.strategy = :transaction
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

谢谢

4

2 回答 2

4

显然问题来自nokogiri。我卸载了 nokogiri gem,然后重新安装它,现在似乎可以工作了。

一个重要的注意事项,网上有很多垃圾:不要触摸,除非你真的知道你在做什么,/opt/local/lib/libiconv.2.dylib 文件,否则它可能会导致 OSX 应用程序出现问题。

于 2012-05-11T04:09:24.357 回答
-2

我在 OSX 上遇到了同样的问题。

在我的 .bash_profile 中,我有:

导出 DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib:/usr/lib/

我删除了 /usr/lib 并且一切正常。

为了调试这个我开始:

  1. 找到 libiconv.dylib
  2. oTool -L {lib} - 用于上一步中的每个库。

/usr/lib 中的系统版本是 7.0 版,这是错误的根源。然后我意识到系统正在回退到旧版本的库......因此导致我的环境变量。

如果遇到此问题,请先检查 LD_LIBRARY_PATH 和 DYLD_LIBRARY _PATH!

于 2012-05-30T13:53:43.633 回答