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