ruby-on-railsrubyrspecspork

spork 0.9.2 and rspec 3.0.0 = uninitialized constant RSpec::Core::CommandLine (NameError)


Im using spork 0.9.2 and rspec 3.0.0. When trying to run test rspec --drb I have an exception

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)

But when changing rspec version back to 2.6 - everything is OK. Has anyone faced the same issue? Is it possible to work around?


Solution

  • The reason is that RSpec::Core::CommandLine was removed in Rspec3

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

    Merge RSpec::Core::CommandLine (never formally declared public) into RSpec::Core::Runner. (Myron Marston)

    But spork depends on this code.

    There is already an issue on spork's github and a solution can be found in a following spork's fork:

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

    In general - replace

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

    with

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

    in the soprks source code