RSpec не запускается --bisect с ошибкой: неопределенный метод `run'для #<RSpec:: Core:: Bisect:: Server>

В настоящее время я нахожусь в процессе обновления довольно большого Rails-приложения с Rails 3 -> Rails 4 (или, может быть, 5).

Я в настоящее время нахожусь в точке, где у меня есть Rails v4.0.13 приложение, работающее на Ruby v2.1.5, Тестовый набор запущен на RSpec v3.5.2и зелёный (уууу!), но, к сожалению, с некоторыми прерывистыми сбоями.

В идеале я хотел бы отследить причину этих сбоев перед дальнейшим обновлением, используя rspec --bisect.

Тем не менее, когда я бегу rspec --bisect (с другими аргументами или без них) я получаю следующую ошибку:

Bisect started using options: ""
Running suite to find failures...

Bisect failed! Failed to get results from the spec run. Spec run output:

(druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1588:in `perform_without_block': undefined method `run' for #<RSpec::Core::Bisect::Server:0x00000001e71430> (NoMethodError)
        from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1548:in `perform'
        from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1626:in `block (2 levels) in main_loop'
        from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1622:in `loop'
        from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1622:in `block in main_loop'
        from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/drb.rb:23:in `run'
        from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/invocations.rb:19:in `call'
        from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:69:in `run'
        from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:45:in `invoke'
        from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/exe/rspec:4:in `<main>'

Кто-нибудь понял, что может быть причиной, или как я могу найти причину?

Некоторые вещи, которые я пробовал до сих пор, но безрезультатно:

  • Понизить rspec до более низкой версии (>= 3.3.0, поскольку именно тогда --bisect был добавлен).
  • Обновите ruby ​​до более поздней версии (а именно 2.3.1). (Это приводит к нескольким ошибкам теста, которые мне еще предстоит устранить, но все равно это не влияет --bisect выпуск).
  • Очистить систему с rvm gemset empty <project_name>; gem install bunder; bundle, чтобы очистить весь код библиотеки перед обновлением, который лежал вокруг.

Также стоит отметить, что у меня есть другие Rails-проекты на этом компьютере, для которых запущен --bisect работает просто отлично - так что я не думаю, что это может быть проблемой совместимости системной библиотеки. Я думаю, это должно быть связано с конфигурацией проекта - но что?! (Я даже не вижу обратный след приложения для подсказок??)

Изменить: пока не нашел решения, я продолжал обновлять приложение. Сейчас работает Rails v4.2.7 а также Ruby v2.3.1, со всеми прохождением спецификаций (но все еще с некоторой проблемой заказа). Сообщение об ошибке при запуске rspec --bisect остается неизменной.

2 ответа

Решение

Это длинный выстрел, но у вас есть файл.rspec?

Я смог воссоздать аналогичную ошибку в пустом проекте rails, добавив spork. По какой-то причине работает rspec --bisect --drb провоцирует эту проблему.

Документация Spork предлагает добавить --drb прямо в файл.rspec. Поэтому убедитесь, что он был удален, и когда вы запускаете только rspec --bisect он должен работать.

Я видел эту ошибку и исправил ее с помощью обхода spring и spring-commands-rspec.

Не использовать bin/rspec --bisect, пытаться:

# Stop spring
bin/spring stop

# Ensure rspec isn't using spring
bundle exec rspec --bisect
Другие вопросы по тегам