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 - все в порядке.
Кто-нибудь сталкивался с той же проблемой? Можно ли работать?
Ответы
Ответ 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, он не нужен.
Ответ 4
Я начал использовать Spring вместо Spork и решил его.
Кажется, новый путь Rails:
http://edgeguides.rubyonrails.org/4_1_release_notes.html#spring-application-preloader
Ответ 5
У меня была такая же проблема. Sans, копающийся в исходном коде rspec3, удалив строку -drb из моего файла .rspec, исправил проблему для меня. Некоторые примеры Guardfile также используют -drb, который вызывает проблемы для меня. После удаления все тесты работают нормально.