ruby - `dirname' : can't convert nil into String (TypeError)

标签 ruby rspec cucumber bundler

我不确定这是否真的在 cucumber 中,但以防万一你们中的一些人知道如何解决这个问题。基本上,我的测试突然停止工作,当我检查时,它显示了这个错误:

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/ruby-1.8.7-p174@mygemset/gems/cucumber-rails-0.5.2/lib/cucumber/rails3.rb:3:in `dirname': can't convert nil into String (TypeError)

奇怪的是,它有不同的 cucumber 导轨版本,我用谷歌搜索,第一个结果显示这是 bunder 的错(虽然我无法破译要点是什么......也许只是复制粘贴的东西?)而且最奇怪的是, Cucumber 正在运行,我在运行 rspec spec 时遇到了这个问题。

下面的3条线索指出,这不是 cucumber 的错,但为什么要怪 cucumber 呢?如果你们中的任何人都可以提供线索来说明为什么会发生这种情况,那么您将让我免于再忍受几个小时的痛苦。

最佳答案

这是由 bundler 尝试“自动获取”gem 的方式引起的。在 1.0 中,bundler 会尝试 gem 名称(在本例中为“cucumber-rails”),如果找不到文件(它不是)则抑制错误。

在 bundler 1.1.1 中,bundler 将“-”的实例替换为“/”,导致它自动请求“cucumber/rails”,从而导致 Ewout 描述的“意外”加载。

要解决,请在您的 gemfile 中设置 :require => false

(注意::require => false 并不意味着 gem 是可选的,只是 Bundler 不应该自动要求它)

关于ruby - `dirname' : can't convert nil into String (TypeError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927669/

相关文章:

ruby-on-rails - Rails 升级中的 PATCH 和 PUT 路线

ios - 如何像 start_test_server_in_background( :timeout => 30)

ruby - 如何将 Base64 图像发送到 Ruby 中的 Google Cloud Vision API 标签检测?

ruby-on-rails - 无 rspec 期望的 capybara have_field 在升级到 2.2 时失败

ruby-on-rails - 在 Rails 中渲染 PNG 文件

ruby - Rspec 不工作,或提高不提高?

java - 无法使用 @Before Hook 获取场景对象

java - 有没有办法用我的 Cucumber 测试运行器运行常规的 jUnit 测试?

ruby - 使用 Rails3 和 Ruby 1.9.2 运行 Mongrel 时出现 LoadError

ruby-on-rails - 同时使用 MacPorts 和 RubyGems 有什么缺点吗?