ruby on rails - spork 0.9.2 y rspec 3.0.0=constante no inicializada RSpec:: Core:: CommandLine(NameError)
ruby-on-rails (5)
Estoy usando spork 0.9.2 y rspec 3.0.0. Cuando intento ejecutar la prueba rspec --drb
tengo una excepción
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)
Pero al cambiar la versión rspec de nuevo a 2.6, todo está bien. ¿Alguien ha enfrentado el mismo problema? ¿Es posible trabajar alrededor?
Comencé a usar Spring en lugar de Spork y eso lo resolvió.
Parece ser la nueva forma de Rails: http://edgeguides.rubyonrails.org/4_1_release_notes.html#spring-application-preloader
La razón es que RSpec :: Core :: CommandLine se eliminó en Rspec3
https://github.com/rspec/rspec-core/blob/master/Changelog.md
Combine RSpec :: Core :: CommandLine (nunca declarado públicamente formalmente) en RSpec :: Core :: Runner. (Myron Marston)
Pero spork depende de este código.
Ya hay un problema en github de spork y se puede encontrar una solución en el siguiente fork de spork:
En general - reemplazar
::RSpec::Core::CommandLine.new(argv).run(stderr, stdout)
con
::RSpec::Core::Runner.run(argv,stderr, stdout)
en el código fuente de soprks
Like @ lx00st dijo:
La razón es que RSpec :: Core :: CommandLine se eliminó en Rspec3
La gema spork no se ha actualizado en rubygems.org. Sin embargo, la solución se ha fusionado en la rama maestra de spork en github. Puede capturarlo diciéndole al agrupador que le gustaría obtener spork de github (maestro) en lugar de rubygems.org. Así que haz esto:
Esto se ha corregido en la rama principal de spork. Solución simple:
gem ''spork'', github: ''sporkrb/spork'', branch: ''master''
Si está utilizando spork-rails, solo necesita spork a través de github antes de requerir spork-rails en su archivo gem. Para más información sobre esto, vea mi comentario aquí:
https://github.com/sporkrb/spork-rails/issues/26
Edición: branch: ''master''
añadida branch: ''master''
Lo mismo aqui. Simplemente elimine la línea "--drb" del archivo .spec y elimine el parámetro cli: ''--drb''
en la línea guard :rspec...
dentro del archivo Guard. Esto no se apaga spork. Simplemente apaga la opción "Rspec de ruby ​​distribuido" (--drb). Como el guardia sabe que está ejecutando Rspec a través de Spork, no es necesario.
Yo tuve el mísmo problema. Sin importar el código fuente de rspec3, eliminar la línea --drb de mi archivo .rspec solucionó el problema. Algunos ejemplos de Guardfile también tienen el uso de --drb que me causa problemas. Una vez retiradas todas las pruebas funcionan bien.