2011-10-28 15 views
14

これは本当にキュウリであるのかどうかはわかりませんが、あなたの中にはこれを修正する手掛かりがある人もいます。基本的に、私のテストが突然動作を停止し、私がチェックしたときに、それはこのエラーを示した:`dirname ':nilをStringに変換できません(TypeError)

C:/Vendor/Ruby187/lib/ruby/gems/1.8/gems/cucumber-rails-1.0.0/lib/cucumber/rails3.rb:3 in 'dirname': can't convert nil into String (TypeError) 

はい、私が最初に私の目をロールバックし、ちょうどWindowsのを呪ったが、私は自分のMac上でそれを試してみましたが、私は同じだ:

/Users/eumir/.rvm/gems/[email protected]/gems/cucumber-rails-0.5.2/lib/cucumber/rails3.rb:3:in `dirname': can't convert nil into String (TypeError) 

奇妙なことに、そのキュウリのレールのバージョンが違うと、私はグーグルグーグルで、最初の結果はそれがバウンダリーの欠陥であることを示しています(私はその要点について解読できません...キュウリが走っていて、rspec specの実行中にこの問題が発生しました。

以下の3つの手がかりはキュウリのせいではないが、なぜキュウリを責めるのか?あなたの誰かが、なぜこれが起こっているのかを知る手がかりを与えることができれば、あなたは数時間以上の苦痛から私を救うでしょう。

答えて

8

新しいキュウリレールのバージョンでは、この問題について警告があります。キュウリレールはenv.rbファイルから必要とされるべきであり、かつバンドラによって以前には要求されていないはずです。これを実現するには、gem cucumber-rails行をGemfile内のgroup:testに入れてください。アスラクとして

+0

(注意:require => falseはバンドラーがそれを自動的に要求すべきではないだけであること、宝石がオプションであることを意味するものではありません)。あなたが宝石を自動ロードすることを知っておいて、特に のようなコードを持っているならば、 'VAR =(something)? VAR' 古い宝石の中に(このプロジェクトのように) –

20

これは、バンドラーがどのように宝石を「自動取得」しようとしたかによって引き起こされた。 1.0では、bundlelerはgem名(この場合は "cucumber-rails")を試し、ファイルが見つからない場合はエラーを発生させます(そうでない場合)。

bundleler 1.1.1では、 " - "のインスタンスを "/"に置き換え、結果として "cucumber/rails"を自動取得し、結果としてEwoutによって記述される "偶発的な"読み込みが発生します。

解決するには、:require => falseをgemfileに設定してください。

:これは古いバージョン・ロック・プロジェクトで私のために働いた

関連する問題