Охрана с RSpec2, Ruby1.9.3, Rails 3.1.3 - программирование
Подтвердить что ты не робот

Охрана с RSpec2, Ruby1.9.3, Rails 3.1.3

Я успешно запускаю Guard с уведомлениями, предоставленными Libnotify.

[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

Если я модифицирую спецификационный файл, я получаю предупреждение о результатах теста, как в терминале, так и с всплывающим уведомлением. Если я модифицирую файл контроллера, снова тесты запускаются нормально. Однако, когда я изменяю route.rb, все дело падает на его лицо, и Guard перестает нормально работать и выдает ошибку. У кого-нибудь есть идеи?

Ошибка:

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

Забыл упомянуть, если я убью Guard и перезапустил (после внесения изменений в routes.rb), то Guard снова выполняет нормально, предполагая, что тест теперь не выполнен:

[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
4b9b3361

Ответ 1

Проверьте каталог spec. Он должен иметь подкаталог routing для спецификаций маршрутизации. Если нет, просто создайте пустую. По-видимому, RSpec не создает никаких подкаталогов под spec при запуске rails g rspec:install, но охранник ожидает, что он будет там.

Ответ 2

Я думаю, что у вас может быть следующая строка в Guardfile:

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

Если у вас нет спецификаций в spec/routing, то не создавайте папку, которая вам не нужна. Измените строку на:

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

Теперь все ваши спецификации будут запускаться при обновлении файла routes.rb.