Como volcar y restaurar data semilla para tu base de datos
Casi siempre en nuestra aplicación necesitamos que la base de datos este con algún contenido basico como para empezar a probar como por ejemplo: paises, ciudades, un usuario administrador, etc. Pues bien muchas veces tenemos que llenar esos datos manualmente y cuando se nos daña por algun motivo la base de datos o queremos llevar nuestra aplicación a producción, la tarea de llenar la base de datos con esos datos “semilla” se complica si no tenemos nada automatizado, pues bien como para muchas cosas en Rails, existe un plugin que nos facilita esa tarea, les presento a: Dataset, podemos instalarlo mediante:
script/plugin install svn://code.logicleaf.com/rails-plugins/dataset
El plugin basicamente lo que hace es crearnos unas tareas que podran ser usadas mediante rake que usaran el mecanismo empleado por los fixtures para volcar y restaurar la data hacia las tablas, por ejemplo para volcar la data de nuestro modelo Distrito(tabla distritos) hacemos lo siguiente:
rake db:dataset:dump_fixtures DATASET=demo INCLUDE=Distrito
Lo que hara esa tarea sera crear el directorio db/dataset/demo y ahi crear el archivo distritos.yml con todos los registros volcados de la tabla distritos.
Mas adelante cuando necesitemos restaurar esos registros, debemos ejecutar otra tarea rake, pero antes de esto vamos a modificar la tarea que viene con el plugin para que no cargue todo nuestro esquema de la base de datos que se encuentra en “db/schema.rb” sino mas bien que solo cargue el entorno de nuestra aplicación, el archivo a editar se encuentra en ‘vendor/plugins/dataset/tasks/dataset_tasks.rake’, debemos cambiar esta linea:
task :load_fixtures => 'db:schema:load' do
por esta otra:
task :load_fixtures => :environment do
Luego podemos restaurar nuestra data con:
rake db:dataset:load_fixtures DATASET=demo
Si queremos volcar o restaurar data de una base datos diferente al entorno en el que estamos simplemente tenemos que especificar el entorno antes del comando rake:
RAILS_ENV=production rake db:dataset:load_fixtures DATASET=demo
Ojala que te haya sido útil ;).
Libro gratuito de novedades en Rails 2.1
Ultimamente ando bastante ocupado en un proyecto que ya pronto vera la luz y lo anunciare aquí, es por eso que no escribo casi nada, pero bueno trataré de al menos dejar algo pequeño cada dia, esta vez les pongo un enlace para que descarguen un libro gratuito con las novedades de Rails 2.1 el cual ya anda rondando hace un par de semanas, espero que les sea de utilidad hasta la proxima ;).
Preparando nuestro ambiente de desarrollo - Parte final
Screen es de esas herramientas con las que te topas y dices: carambas pero esto era lo que necesitaba desde hace mucho tiempo, que maravilla!. La descubrí leendo en un blog de un administrador de sistemas(en este momento no recuerdo cual, pero estaba en inglés), y en ese momento Screen encajo perfectamente para mi tarea mas habitual que era la administracion de un par de VPS’s que tenemos, me molestaba tener que abrir un nuevo terminal para cada nueva tarea que querial realizar en el servidor, asi que empezé a usarlo para eso.
Continuar leyendoPreparando nuestro ambiente de desarrollo - Parte 1
La mejor arma que todo desarrollador puede tener para mejorar su productividad es su ambiente de desarrollo, muchos desarrolladores tratan de buscar el IDE o editor de textos perfecto para desarrollar, pero pocas veces encuentran uno que pueda cumplir con todas sus expectativas, y pienso que esto es normal ya que no existe herramienta perfecta hablando a nivel general de aplicaciones.
Continuar leyendoBienvenidos a mi nuevo hogar!
Y por fin despues de un buen tiempo logro culminar este pequeño blog, el cual estaba retrasado en su desarrollo debido a mi poco tiempo tiempo disponible fuera del trabajo.
Algunos preguntaran porque crear un blog desde 0, habiendo buenos gestores de blogs como Mephisto, bueno siempre queria escoger un pequeño proyecto el cual pueda desarrollar en mis tiempos libres y en el cual pueda plasmar todo lo que he ido aprendiendo sobre Rails en el transcurso de este tiempo y no se me ocurrió mejor idea que mi propio blog.
Les quiero contar algo sobre las herramientas que he empleado para el desarrollo, para empezar aqui una pequeña muestra de la salida del comando “rake stats” el cual muestra la cantidad de lineas de codigo, cantidad de modelos, vistas y controladores entre otras cosas:

Como veran, tengo 7 y 13 controladores, tambien podran apreciar que estoy usando Rspec para escribir las pruebas de mi aplicación, veran tambien que tengo 0 lineas de codigo en las specs de mis vistas, esto es debido a que estoy usando “integrated_views” en el controlador, es decir las vistas las pruebo de manera integrada con el controlador como lo hacemos normalmente en Rails y no de manera isolada como se puede hacer en Rspec.
En cuanto a los plugins he usado los siguientes:
- action_mailer_tls, este plugin lo uso para poder enviar correo a traves de mi cuenta en GMail usando el protocolo TLS.
- async_mailer, este plugin es para poder enviar correos sin bloquear al servidor de aplicaciones(Mongrel) durante el envio del correo, es decir cada vez que se envia el correo se crea un nuevo hilo y el servidor de aplicación sigue su trabajo normal sin esperar nada sobre el envio del correo.
- acts_as_taggable_on_steroids, este es un plugin para el manejo de Tags, y es una versión mejorada del longevo acts_as_taggable.
- acts_as_textiled, este plugin facilita la integración de Textile en nuestra aplicación y fue desarrollado por uno de los amigos de ERR the blog.
- annotate_models, este plugin es bien util en etapa de desarrollo, nos permite ver toda la estructura de nuestra tabla colocada como comentario por encima de la definición de nuestro modelo.
- attachment_fu, este el plugin preferido cuando de subir archivos y manipular imagenes se trata.
- restful_authentication, otro de los plugins mas preferidos cuando se trata de agregar autenticación a una aplicación.
- will_paginate, el plugin mas maduro que existe para paginación en Rails, y preparado tambien por los amigos de ERR the blog.
- y por ultimo textile_editor_helper, plugin que utilizo para poder usar Textile facilmente en la redacción de los artículos.
Y para finalizar, decirles que no ha sido nada fácil aprender conceptos como BDD que me ha llevado casi 2 meses en comprenderlo bien, pero que cuando lo aprendes bien te da la satisfacción de saber que tu codigo se encuentra menos propenso a errores y que puedes hacer un cambio en cualquier parte de la aplicación reduciendo los efectos colaterales muchas veces inesperados ya que tienes una bateria de pruebas que te respalda, bueno y por ultimo decirles que desde esta pequeña tribuna estare tratando de aportar mis conocimientos a todos aquellos desarrolladores que se estean iniciando en Rails y el desarrollo web en general.