Usando guard-rspec con factory-girl-rails

Estoy usando factory_girl_rails como reemplazo de los accesorios en mi proyecto Rails. También estoy usando guard-rspec para ejecutar automáticamente mis especificaciones. Guard no está recogiendo los cambios que hago en mis archivos de fábrica (por ejemplo, spec/factories/users.rb ): tengo que detener la guardia y luego reinicializarla para que pueda recoger esos cambios.

¿Cuáles son algunas opciones para evitar este proceso manual?

Para agregar a su propia respuesta:

Limito lo que se ejecuta, por lo que no se ejecuta demasiado:

 watch(%r{^spec/factories/(.+)\.rb$}) { "spec/models" } 

o incluyendo el controlador relevante:

 watch(%r{^spec/factories/(.+)\.rb$}) { |m| ["spec/models/", "spec/controllers/#{m[1]}_controller_spec.rb"] } 

Después de algunas búsquedas, tropecé con esta esencia y extraje:

 watch(%r{^spec/factories/(.+)\.rb$}) 

El cual, según la documentación , le indica al guardia actual que observe los cambios en los archivos * .rb en spec/factories/

Limitando aún más a las especificaciones específicas relacionadas con la fábrica, debería ser algo como:

 require 'active_support/inflector' watch(%r{^spec/factories/(.+)\.rb$}) do |m| %W{ spec/models/#{m[1].singularize}_spec.rb spec/controllers/#{m[1]}_controller_spec.rb } end 

Yo uso esto en mi macbook, debería agregar esta línea en su Guardfile

 watch(%r{^spec/factories/(.+)\.rb$}) { rspec.spec_dir } 

y se ejecutará automáticamente todo el archivo de especificaciones.

Si establece que el valor de retorno del bloque es ‘spec / models’, solo se ejecutan las especificaciones bajo spec / models dir.

Utilizo Dir.glob para obtener una lista de todos los nombres de archivos que quiero monitorear. Esto funciona también para la estructura de carpetas anidadas.

 require 'active_support/inflector' watch(%r{^spec/factories/(.+)\.rb$}) { |m| [ *Dir.glob("spec/models/#{m[1].singularize}_spec.rb"), *Dir.glob("spec/requests/**/#{m[1]}_spec.rb"), *Dir.glob("spec/controllers/**/#{m[1]}_controller_spec.rb"), ] } 
    Intereting Posts