2011-09-15 8 views
6

Estamos trabajando en un proyecto de Rails 3 y pruebas utilizando Capybara/RSpec. El problema es que el entorno de producción y producción difiere un tanto. A veces, las pruebas funcionarán bien y no habrá problemas en la puesta en escena, pero se interrumpirá la producción.Rieles: Probar producción

Un ejemplo es cuando agregamos un middleware que usa Rack :: File para enviar archivos. La aplicación envió el encabezado 'X-Sendfile' que funciona bajo Apache, pero Nginx espera 'X-Accel-Redirect'.

Estoy buscando la mejor manera de ejecutar una batería de pruebas cuando empezamos a producir. ¿Alguien ha hecho esto? Lo ideal es que las pruebas no se ejecuten en el servidor de producción.

Las pruebas básicamente cubrirían las características principales de nuestro producto y serían diferentes de las pruebas que estamos ejecutando actualmente.

Muchas gracias

+2

Algo que he aprendido por las malas es: codificar y desplegar en entornos que son idénticos a la producción. ¿Puedes cambiar el servidor Apache para Nginx? Por lo general, configuro una máquina virtual con la misma configuración exacta que la producción (en lo que respecta al sistema operativo) y despliego/prueba/ejecuto la aplicación allí. – Augusto

+0

Estoy de acuerdo en que esta sería la situación ideal, pero nuestro administrador de sistemas simplemente no tiene tiempo en el futuro previsible. Además, no estoy seguro de que podamos ser exactamente como la producción. – gmalette

+1

¿Puedes construirlo? Instale VMware Player o BusyBox con la misma versión de sistema operativo y nivel de parche. Por 'idéntico' quiero decir lo más similar posible, por lo que puede probar este tipo de escenarios. Estoy (bastante) seguro de que si le pides a tu administrador de sistemas que te dé una mano, con el beneficio de que no necesitarás su tiempo tan a menudo, él estará de acuerdo. Te dará la libertad de probar algunos casos 'edge' y liberará al administrador del sistema para hacer un trabajo real en lugar de ser un servicio de ayuda ... ¡¡estoy seguro de que puedes convencerlo !! – Augusto

Respuesta

6

Lo que terminé haciendo es tener otro conjunto de pruebas RSpec en un entorno que ha production_test acceso de sólo lectura a la base de datos. Uso el controlador capybara-webkit y cada prueba comienza visitando la URL completa de esa prueba.

Cuestiones relacionadas