Resolviendo un problema tonto pero poco común en Rails y sus Migraciones

Ruby on Rails es un genial framework para desarrollar aplicaciones web. Tiene poco tiempo en el mercado y un crecimiento muy bueno para ser tan joven. Entre las muchas bondades de Rails están las migraciones. Estas son un mecanismo para interactuar con el modelo de datos sin escribir líneas de código SQL o ingresar al motor de base de datos que escojamos.

Una migración te permite crear tablas, agregar columnas, cambiar nombres de tablas, nombres de columnas y cambiar tipos de datos, incluso crear índices sobre columnas existentes. En fin, desde una migración tienes la base de datos a tu merced, sin embargo, eso no es lo más interesante de las migraciones.

Lo mejor de una migración es que se almacenan en archivos con una marca de tiempo única que te permite llevar el seguimiento y conocer cómo es el modelo de datos de tu aplicación.

Para correr una migración en Rails se debe ejecutar el comando

rake db:migrate

Este comando tomará todas las migraciones que no se han corrido y ejecutará las acciones que estas indiquen.

Un pequeño lío

Resulta que en el nuevo lugar donde trabajo he estado trabajando bastante con Ruby on Rails. En una ocasión necesitaba modificar unas columnas de varias tablas pero las migraciones no me estaban corriendo con normalidad.

migracion en ruby on rails

Fue algo sumamente extraño ya que en el mismo día había corrido otras migraciones de la forma habitual, sin ningún problema.

Supuse que había algo mal escrito así que lo que hice fue reescribir la migración original.

En este inicio de semana, me ocurrió el mismo problema así que decidí buscar al respecto. La solución fue muy simple pero no tan obvia.

Resulta que normalmente trabajo con varias pestañas de la terminal. Una para Rails en donde corro los comandos normales, otra también para Rails pero para abrir la consola y una última para ejecutar comandos git.

La consola de Rails se accede con el comando

rails console

Sucede y pasa que las migraciones no ejecutaban porque tenía abierta la segunda pestaña con la consola de Rails. Al parecer el framework no las ejecuta porque hay una interfaz accediendo a la base de datos y por ello no se pueden hacer los cambios.

¿La solución y lección?

Cuando vaya a correr migraciones, cerrar todas las sesiones de Rails 🙂

La respuesta la encontré en Stack Overflow.

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

2 comentarios en “Resolviendo un problema tonto pero poco común en Rails y sus Migraciones”

    1. Y también los rails c. Aunque hoy me pasó que pude ejecutar las migraciones sin tener que bajar la consola rails (rails c). Comienzo a pensar que la tabla que se esté leyendo pueda influir.

      No estoy muy seguro.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s