1

rspec-mode を使用して emacs から特定の rspec リクエスト スペックを実行すると、次のエラーが表示されます。

dyld: lazy symbol binding failed: Symbol not found: _system_free 参照元: /Users//.rvm/gems/ree-1.8.7-2011.03@/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.bundle : フラットな名前空間

コマンドラインから同じ仕様を実行すると、問題なく動作します。emacs を介して rspec リクエスト スペックを実行するとエラー メッセージが表示される理由を誰かが知っているのではないかと思いますか?

4

1 に答える 1

1

rspec-modeプロジェクトのホームページで提案されているように、emacsにzshの代わりにbashシェルを使用させることで、この問題を解決することができました。私はその情報をここにコピーしています:

ZSHとRVMを使用している場合、仕様の実行で問題が発生する可能性があります。.rvmrcで指定したバージョンよりも古いバージョンのRubyが使用されている可能性があります。これは、シェルが作成されるたびにZSHが小さなスクリプトを実行し、$PATHを変更するためです。問題は、別のrubyバイナリを含む/ usr/binなどのデフォルトパスが付加されることです。

これを解決するためにできることは、仕様を実行するためにBASHを使用することです。このコードは次の役割を果たします。

(defadvice rspec-compile (around rspec-compile-around)
  "Use BASH shell for running the specs because of ZSH issues."
  (let ((shell-file-name "/bin/bash"))
    ad-do-it))
(ad-activate 'rspec-compile)
于 2012-04-24T20:02:44.470 に答える