2012-03-14 9 views
20

Seguí el Rails Tutorial en la configuración de pruebas automáticas con Guard and Spork. De vez en cuando, sobre todo cuando guardar una plantilla sin editar en mi editor de, Guardia se quejan (full backtrace):Error al ejecutar el proceso Guard: no se puede encontrar el método de singularización

ERROR: Problem with watch action! 
undefined method `singularize' for "layouts":String 

Mi Guardfile:

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

guard 'rspec', :version => 2, :all_after_pass => false, :cli => '--drb' 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{^app/(.*)(\.erb|\.haml)$})     { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } 
    watch(%r{^lib/(.+)\.rb$})       { |m| "spec/lib/#{m[1]}_spec.rb" } 
    watch(%r{^app/controllers/(.+)_(controller)\.rb$}) do |m| 
    ["spec/routing/#{m[1]}_routing_spec.rb", 
    "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", 
    "spec/acceptance/#{m[1]}_spec.rb", 
    "spec/requests/#{m[1].singularize}_pages_spec.rb"] ### Look here ### 
    end 
    watch(%r{^app/views/(.+)/}) do |m| 
    "spec/requests/#{m[1].singularize}_pages_spec.rb" ### Look here ### 
    end 
    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 


guard 'spork', :rspec_env => { 'RAILS_ENV' => 'test' } do 
    watch('config/application.rb') 
    watch('config/environment.rb') 
    watch(%r{^config/environments/.+\.rb$}) 
    watch(%r{^config/initializers/.+\.rb$}) 
    watch('Gemfile') 
    watch('Gemfile.lock') 
    watch('spec/spec_helper.rb') 
    watch('test/test_helper.rb') 
end 

Guardia no se queja si recomienzo , pero reiniciar es ponerse un poco molesto; Sin duda, no es tan molesto como correr rspec cada vez que quiero una prueba.

  • Probé la sugerencia de this post, pero creo que puede haber .autotest el archivo incorrecto para guardia, ya que esta no es la fijación de la cuestión. El only similar error que encontré con Google no parece estar relacionado

Respuesta

32

En realidad, in the Rails tutorial están agregando require 'active_support/core_ext' en la parte superior del archivo de la Guardfile.

Creo que esto podría solucionar su problema.

También asegúrese de declarar el protector de esputo antes de la protección rspec.

+7

Sí, '# singularize' es de [ActiveSupport :: Inflector] (http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html), por lo que' require 'active_support/inflector'' es suficiente. – Netzpirat

+2

Doh! Si fuera un ejemplo de código completo, habría copiado y pegado. : D Espero que esto ayude al alma desafortunada que tiene este problema en el futuro. Además, ¡gracias por el consejo sobre proteger a spork primero! – jrhorn424

+0

me ayudó al menos :) ¡Gracias! –

Cuestiones relacionadas