Domanda

sto sviluppando un motore personalizzato utilizzando questa configurazione .

Ho creato il motore con

rails plugin new MyEngine --full

rspec-rails Poi ho aggiunto e guard-rspec come dipendenze di sviluppo con

s.add_development_dependency "rspec-rails"
s.add_development_dependency "guard-rspec"

nel mio file gemspec.

Quando eseguo sia rspec e rake spec (con o senza bundle exec) mio specifiche funzionano bene. Quando eseguo il comando guard tuttavia corre tutte le specifiche per la prima volta e poi non fa nulla. Non sarà rilevare eventuali cambiamenti di file in tutto l'app.

Il Guardfile viene generato normalmente con guard init spec, ecco il suo contenuto

# A sample Guardfile
# More info at https://github.com/guard/guard#readme

guard 'rspec', :version => 2 do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec/" }

  # Rails example
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^lib/(.+)\.rb$})                           { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
  watch(%r{^spec/support/(.+)\.rb$})                  { "spec/" }
  watch('spec/spec_helper.rb')                        { "spec/" }
  watch('config/routes.rb')                           { "spec/routing" }
  watch('app/controllers/application_controller.rb')  { "spec/controllers" }
  # Capybara request specs
  watch(%r{^app/views/(.+)/.*\.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
end

Se tengo un open shell con protezione in esecuzione e lo faccio da un altro guscio touch app/my_model.rb non succede nulla. Lo stesso vale per tutti gli altri file (pattern) elencati nel Guardfile.

C'è un modo per eseguire il debug di questo tipo di problemi?

Aggiorna Ho creato un nuovo progetto (un rotaie uno) e installato il gemma con questo Guardfile

guard 'shell' do
  watch(%r{(.*)}) {|m| `cat #{m[0]}` }
  watch(%r{(.*)}) {|m| raise m.to_s }
end

Anche in questo caso se modificare qualsiasi file non succede nulla. Sto iniziando a pensare che il problema potrebbe essere da qualche altra parte, magari in gemma rb-fsevents. Quello che posso controllare?

È stato utile?

Soluzione 2

Ok, non so che cosa c'è che non va, ma il problema era in fseventd che era in qualche modo congelato.

guardia esecuzione senza ha risolto il problema, in modo che il problema non era con la guardia stessa

> guard
Please install rb-fsevent gem for Mac OSX FSEvents support
Using polling (Please help us to support your system better than that.)
Please install growl or growl_notify gem for Mac OS X notification support and add it to your Gemfile

Inoltre il riavvio del sistema (non so come riavviare il demone) è "sbloccato" il fseventd e ora funziona di nuovo. Forse è stata colpa mia, perché non ha riavviato il sistema per più di un mese ...

Altri suggerimenti

Il file di guardia per rspec a quanto pare non è giusto. E 'guardando app/controllers, ma non app/models.

Avreste bisogno di una regola come:

watch(%r{^app/models/(.+)\.rb$}) {|m| "spec/models/#{m[1]}_spec.rb" }

Cambia la seconda parte in cui sono conservati i vostri modelli spec. E 'stato un po' che ho usato RSpec, non ricordo il layout di directory specifica.

Modifica:

Inoltre dispari, l'osservatore lib è definito due volte? Una volta in cima e una volta sotto le rotaie. Mi chiedo se questo secondo definizione è un errore, e vuole essere la regola per app/models.

Ci sembra anche essere un bug nella versione attuale 1.2.2, che ha mostrato gli stessi sintomi come hai descritto nel mio ambiente. Aggiornamento a 1.2.3 aiutato.

Nel mio caso, Guardia funziona inizialmente. Poi ho creato un link simbolico alla directory che guarda. Si fermò.

Supponiamo che guarda "fonte / example". Ho creato un link simbolico come "fonte / link_me" -> "fonte / example". Guardia sarebbe rimasto in silenzio troppo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top