Viviendo al filo (de Rails) #20 - script/dbconsole y tests para flash.now
Este artículo es una traducción de Living on the edge of Rails (20), publicado por Chu Yeow en su blog redemption in a blog.
El informe de esta semana cubre los cambios entre el 5 y el 11 de Mayo de 2008 en Rails.
script/dbconsole
Se ha añadido un script en scripts/dbconsole que nos permite conectarnos a la base de datos usando el cliente de consola de la misma. Si por ejemplo necesitásemos conectarnos al servidor de base de datos de producción (¡más vale que sepamos lo que estamos haciendo!) podríamos ejecutar RAILS_ENV=production script/dbconsole y nos conectará a la base de datos utilizando el cliente de comandos de MySQL. También funcionará con las bases de datos SQLite y PostgreSQL.
Como siempre, para disponer de este script en las aplicaciones que ya tengamos funcionando debemos recordar ejecutar rake rails:update:scripts después de actualizarnos a la última versión edge de Rails
Esta pequeña mejora es obra de Steve Purcell, que ya tenía un plugin similar.
Los cambios correspondientes son http://github.com/rails/rails/commit/4a07103687084496b773e18a03b1f2f5e686f7ad
flash.now en tests
<p>Esto era algo con lo que posiblemente muchos desarrolladores de Rails nos hemos topado a la hora de escribir tests de los mensajes <em>flash</em> que envía nuestra aplicación mediante <tt>flash.now</tt>. Básicamente: uno no puede hacer pruebas sobre los contenidos de <tt>flash.now</tt> porque siempre se vaciaban antes de que el código del test se ejecutase sobre ellos.</p>
En el controlador
flash.now[:notice] = 'Debes de estar de broma!'
En el test
assert_equal 'Debes de estar de broma!', flash.now[:notice]
FALLA porque flash.now es nulo
<p><a href="http://zargony.com/">Andreas Neuhaus</a> le echó un buen vistazo al funcionamiento y se aseguró de que se puedan hacer tests sobre <tt>flash.now</tt> sin tener que recurrir a <tt>assert_select</tt></p>
<p>El cambio en cuestión está en <a href="http://github.com/rails/rails/commit/74eed6290e63111d1aad2b181692a84f4f040aea">http://github.com/rails/rails/commit/74eed6290e63111d1aad2b181692a84f4f040aea</a></p>
<p>No hay mucho más que reseñar pero, como siempre, si queremos conocer hasta los más minimos detalles, lo mejor es repasar los <a href="http://github.com/rails/rails/commits/master">logs de commit de Rails</a>.</p>
