Rails 3.2.3 Rake Cucumber:未加载库

时间:2012-05-11 03:50:26

标签: testing cucumber ruby-on-rails-3.2

将我的ruby更新为1.9.3并导航到3.2.3后我一直在尝试按照RailsApp Projects devise, rspec and cucumber中的教程进行操作,并且在步骤中尝试黄瓜时遇到了问题

rake cucumber

并获得佣金中止错误

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

感谢

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:-2)

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

在我的.bash_profile中我有:

export DYLD_LIBRARY_PATH = $ DYLD_LIBRARY_PATH:/ usr / local / mysql / lib:/ usr / lib /

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

为了调试这个我开始于:

  1. 找到libiconv.dylib
  2. oTool -L {lib} - 对于上一步中的每个库。
  3. / usr / lib中的系统版本是7.0版,这是错误的来源。然后我意识到系统正在退回到旧版本的库...因此导致我的环境变量。

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