2012-01-18 7 views
16

Estoy ejecutando Guard con éxito con las notificaciones proporcionadas por Libnotify.Guardia con RSpec2, Ruby1.9.3, Rails 3.1.3

[email protected]:~/railsprojects/sample_app$ guard 
Guard uses Libnotify to send notifications. 
Guard is now watching at '/home/funkdified/railsprojects/sample_app' 
Guard::RSpec is running, with RSpec 2! 
Running all specs 
... 

Finished in 0.06053 seconds 
3 examples, 0 failures 

Si modifico el archivo de especificaciones Estoy alertado en cuanto a los resultados de la prueba, tanto en el terminal y con una notificación emergente. Si modifico un archivo de controlador, nuevamente las pruebas se ejecutan normalmente. Sin embargo, cuando modifico routes.rb, todo cae en su cara y Guard deja de funcionar normalmente y arroja un error. ¿Alguien tiene alguna idea?

error:

Running: spec/routing 
/home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `load': cannot load such file -- /home/funkdified/railsprojects/sample_app/spec/routing (LoadError) 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `block in load_spec_files' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `map' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `load_spec_files' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:22:in `run' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:80:in `run_in_process' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:69:in `run' 
    from /home/funkdified/.rvm/gems/[email protected]/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:in `block in autorun 

se olvidó de mencionar, si mato de protección y de reinicio (después de realizar cambios routes.rb) entonces Guardia realiza de nuevo con normalidad, lo que sugiere que una prueba ha fallado:

[email protected]:~/railsprojects/sample_app$ guard 
Guard uses Libnotify to send notifications. 
Guard is now watching at '/home/funkdified/railsprojects/sample_app' 
Guard::RSpec is running, with RSpec 2! 
Running all specs 
..F 

Failures: 

    1) PagesController GET 'about' returns http success 
    Failure/Error: get 'about' 
    ActionController::RoutingError: 
     No route matches {:controller=>"pages", :action=>"about"} 
    # ./spec/controllers/pages_controller_spec.rb:22:in `block (3 levels) in <top (required)>' 

Finished in 0.0576 seconds 
3 examples, 1 failure 

Failed examples: 

rspec ./spec/controllers/pages_controller_spec.rb:21 # PagesController GET 'about' returns http success 

Respuesta

30

Revise su directorio spec. Debe tener un subdirectorio routing para las especificaciones de enrutamiento. Si no, solo crea uno vacío. Aparentemente, RSpec no crea ningún subdirectorio bajo spec cuando ejecuta rails g rspec:install, pero la guardia espera que esté allí.

2

que cree que puede tener la siguiente línea en su Guardfile:

watch('config/routes.rb')       { "spec/routing" } 

Si no dispone de las especificaciones en spec/routing, entonces no carpeta que no es necesario. Cambie la línea:

watch('config/routes.rb')       { "spec" } 

Ahora, todas sus especificaciones se ejecutarán cuando se actualiza el archivo de routes.rb.

Cuestiones relacionadas