`dirname ': невозможно преобразовать nil в String (TypeError) - PullRequest
14 голосов
/ 28 октября 2011

Я не уверен, что это действительно огурец, но на тот случай, если некоторые из вас, ребята, имеют представление о том, как это исправить. В основном, мои тесты внезапно перестали работать, и когда я проверял, это показало эту ошибку:

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)

Странно, но в разных версиях огуречных рельсов я погуглил, и первый результат показывает, что это ошибка Бандера (хотя я не могу понять, в чем суть ... может быть, просто скопировать вставленный материал?) И самый странный из всех , Огурец работает, и я сталкиваюсь с этой проблемой во время работы rspec spec.

3 подсказки ниже указывают на то, что это не вина огурца, но почему он винит огурец? Если кто-нибудь из вас сможет понять, почему это происходит, вы избавите меня от нескольких часов боли.

Ответы [ 3 ]

20 голосов
/ 16 марта 2012

Это было вызвано тем, как упаковщик пытается «автоматически запросить» драгоценные камни. В версии 1.0 упаковщик пытается использовать имя самоцвета (в данном случае «огурцы-рельсы») и подавляет ошибку, если файл не найден (это не так).

В bundler 1.1.1, bundler заменяет экземпляры "-" на "/", в результате чего он автоматически запрашивает "огурец / рельсы", что приводит к "случайной" загрузке, описанной Ewout.

Для разрешения установите :require => false в вашем гемфайле.

(Примечание: :require => false не означает, что самоцвет необязателен, просто то, что Bundler не должен автоматически требовать его)

8 голосов
/ 28 октября 2011

Новые версии огурцов-рельсов предупреждают вас об этой проблеме. Огурцы-рельсы должны быть запрошены в файле env.rb, а не перед сборщиком. Для этого поместите строку gem cucumber-rails в группу: test в своем Gemfile.

2 голосов
/ 24 ноября 2011

Как Аслак говорит в своем ответе:

http://groups.google.com/group/cukes/msg/803836e9f6e7f1be

Мне просто нужно было обновить огуречные рельсы.@Ewout тоже указал мне верное направление, поэтому он также заслуживает +1 :)

...