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

Im с помощью spork 0.9.2 и rspec 3.0.0. При попытке запустить test 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-все в порядке. Кто-нибудь сталкивался с той же проблемой? Можно ли это обойти?

5 ответов


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

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

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

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

на GitHub spork уже есть проблема, и решение можно найти в следующем 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


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

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

драгоценный камень спорк не был обновлен в rubygems.org - ... Тем не менее, исправление было объединено в главную ветвь spork на github. Вы можете захватить его, сказав bundler, что вы хотели бы получить 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

Edit: добавлено branch: 'master'


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


Я начал использовать Spring вместо Spork, и это решило его.

кажется, это новый путь рельсов: http://edgeguides.rubyonrails.org/4_1_release_notes.html#spring-application-preloader


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