Подтвердить что ты не робот

Spork 0.9.2 и rspec 3.0.0 = неинициализированная константа RSpec:: Core:: CommandLine (NameError)

Im, используя spork 0.9.2 и rspec 3.0.0. При попытке выполнить тест rspec --drb у меня есть исключение

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/spork-0.9.2/lib/spork/test_framework/rspec.rb:11:in run_tests: uninitialized constant RSpec::Core::CommandLine (NameError)

Но при смене версии rspec на 2.6 - все в порядке. Кто-нибудь сталкивался с той же проблемой? Можно ли работать?

4b9b3361

Ответ 1

Причина в том, что RSpec:: Core:: CommandLine был удален в Rspec3

https://github.com/rspec/rspec-core/blob/master/Changelog.md

Объединить RSpec:: Core:: CommandLine (официально не объявленный публично) в RSpec:: Core:: Runner. (Майрон Марстон)

Но spork зависит от этого кода.

Существует проблема с spork github, и решение может быть найдено в следующей вилке spork:

https://github.com/codecarson/spork/commit/38c79dcedb246daacbadb9f18d09f50cc837de51#diff-937afaa19ccfee172d722a05112a7c6fL6

В общем - замените

::RSpec::Core::CommandLine.new(argv).run(stderr, stdout)

с

::RSpec::Core::Runner.run(argv,stderr, stdout)

в исходном коде soprks

Ответ 2

Как @lx00st сказал:

Причина в том, что RSpec:: Core:: CommandLine был удален в Rspec3

Драгоценный камень spork не обновлен в rubygems.org. Однако исправление было объединено в ведущую ветвь spork на github. Вы можете схватить его, сообщив поставщику, что вы хотите получить spork от github (master) вместо rubygems.org. Так сделайте это:

Это исправлено на ветке мастера spork. Простое решение:

gem 'spork', github: 'sporkrb/spork', branch: 'master'

Если вы используете spork-rails, просто требуйте spork через github, прежде чем вам понадобиться spork-rails в вашем gemfile. Для получения дополнительной информации об этом см. Мой комментарий здесь:

https://github.com/sporkrb/spork-rails/issues/26

Изменить: добавлено branch: 'master'

Ответ 3

То же самое здесь. Просто удалите строку "--drb" из файла .spec и удалите параметр cli: '--drb' на строке guard :rspec... в файле Guardfile. Это не отключает spork. Он просто отключает опцию "распределенный рубин" (--drb) Rspec. Поскольку охранник знает, что вы запускаете Rspec через Spork, он не нужен.

Ответ 5

У меня была такая же проблема. Sans, копающийся в исходном коде rspec3, удалив строку -drb из моего файла .rspec, исправил проблему для меня. Некоторые примеры Guardfile также используют -drb, который вызывает проблемы для меня. После удаления все тесты работают нормально.