En primer lugar, la configuración ...¿Cuál es la mejor forma de probar el humo de un entorno de producción/producción en Rails?
Actualmente estoy desarrollando una aplicación Rails 3 en Mac OS X usando Ruby 1.8.7 MRI, ejecutando pruebas y desarrollo local contra una base de datos MySQL. Tengo 3 "otros" entornos no locales que utilizamos en mi empresa para cada aplicación llamada dev, tqa y prod. Se ejecutan en Tomcat utilizando JRuby (1.8.7) con Oracle como back-end.
Como puede ver, los entornos son bastante diferentes, y hemos encontrado algunos errores en la implementación en un entorno Oracle/JRuby que no existe localmente (como el manejo de fechas y la especificación de esquemas predeterminados en Oracle).
Me encanta ejecutar algo como Cucumber/Webrat/Capybara a nivel local para golpear cada URL expuesta en la aplicación para asegurarme de que las cosas básicas funcionen (es decir, una prueba de humo). Lo ideal es que acceda a todas las direcciones URL y haga algunas cosas simples como ingresar datos en formularios y hacer clic en botones, etc.
Idealmente, cuando implemente en dev/tqa, ejecutaría algo similar, excepto que apuntaba al desplegado aplicación en lugar de la aplicación local. Pepino parece optimizado para golpear una aplicación que se ejecuta localmente y se integra bien con Rails, pero no puede ejecutarse contra lo que es a todos los efectos una aplicación "externa" (o al menos no puedo encontrar una manera fácil que realmente funcione).
Además, cuando implemente para pinchar me gustaría un conjunto similar de pruebas de humo para ejecutar, excepto que no cambiaría el estado de la base de datos de producción actual (es decir, solo OBTUVE URL).
Algo como Selenium podría usarse, supongo, pero me gustaría simplemente ejecutar una tarea de rake y obtener los resultados como lo hago con Cucumber.
¿Hay alguna forma de Rails/Ruby para hacer esto, o todos los demás simplemente lanzan su propia solución usando wget o Selenium?
Una pregunta similar se le pidió aquí: Automatically smoke test all webpages in application, after deployment
No estoy seguro de que la pregunta es exactamente lo que tengo en mente, sin embargo.