2011-10-28 101 views
14

我不確定這是否真的在黃瓜,但只是爲了以防萬一你們有線索如何解決這個問題。基本上,我的測試中突然停止工作,當我檢查,這表明這個錯誤:`dirname':can not convert nil into 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文件中使用Cucumber-rails,而不是之前使用bundler。爲了達到這個目的,把gem cucumber-rails行放在你的Gemfile中的group:test中。

+0

這爲我工作在一箇舊版本鎖定項目。很高興知道bundler會自動加載你的寶石,特別是如果你的代碼像 'VAR =(something)unless defined? VAR' 在一個古老的寶石(這個項目有) –

20

這是由於bundler試圖「自動尋寶」的寶石。在1.0中,bundler會嘗試gem名稱(在本例中爲「cucumber-rails」),並在文件未找到(不是)時剔除錯誤。

在bundler 1.1.1中,bundler用「/」替換「 - 」的實例,導致它自動修復「cucumber/rails」,導致Ewout描述的「意外」加載。

要解決,請在您的gemfile中設置:require => false

(注::require => false並不意味着創業板是可選的,只是捆紮機不應自動需要它)

相關問題