1

ルビーを1.9.3に、レールを3.2.3に更新した後、RailsApp Projects devise、rspec、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

ありがとう

4

2 に答える 2

4

どうやら問題はnokogiriにありました。nokogiri gemをアンインストールしてから再インストールしたところ、動作しているようです。

重要な注意事項であり、Webには多くのジャンクがあります。何をしているのかを本当に理解していない限り、/ opt / local / lib / libiconv.2.dylibファイルに触れないでください。そうしないと、OSXアプリケーションで問題が発生する可能性があります。

于 2012-05-11T04:09:24.357 に答える
-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}-前のステップのライブラリごとに。

/ usr / libのシステムバージョンはバージョン7.0であり、これがエラーの原因です。その後、システムが古いバージョンのライブラリにフォールバックしていることに気付きました...したがって、環境変数につながりました。

この問題が発生した場合は、最初にLD_LIBRARY_PATHとDYLD_LIBRARY_PATHを確認してください。

于 2012-05-30T13:53:43.633 に答える