Cómo Correr Migraciones Durante Despliegue de Aplicación Rails en Heroku

Se sabe bien que subir aplicaciones web a Heroku es sencillo. En muchos casos es solo cuestión de correr comandos en la terminal y con una que otra configuración solo con subir los cambios al repositorio basta.

Y si bien tenemos esa facilidad, hay cosas que Heroku deja de hacer por conveniencia, ahorro o que sé yo. Tal es el caso de la ejecución de migraciones cuando se despliegan aplicaciones Ruby on Rails en este servicio.

Normalmente, en un despliegue a Heroku el comando para correr migraciones no es aplicado. Durante el despliegue Heroku ejecuta todo lo necesario para que la aplicación quede disponible con la URL asignada pero lo demás no le concierne.

O sea que si en un nuevo cambio agregamos dos campos nuevos a la base de datos y ejecutamos en una consola heroku push origin master, al terminar el proceso los campos no estarán en la base de datos Heroku Postgres y la aplicación probablemente va a dejar de funcionar.

Para solventar esta situación hay varias formas. La mejor y actual es usar los Release Phases los cuales son una característica algo nueva.

Solo para el registro algunas alternativas son/fueron:

¿Qué es release phase?

Básicamente es una característica de Heroku que permite correr tareas en momentos previos a que el despliegue culmine.

La jerga de Release Phase está muy ligada a cómo funciona el despliegue en Heroku. Si se quiere entender más, ver la documentación.

Con esto en mente, lo mejor es definir un archivo Procfile en el proyecto y en él tener el siguiente código:

# Procfile

release: bundle exec rails db:migrate
web: bundle exec puma -C config/puma.rb

Ya con la primera línea en ese archivo, en cada despliegue Heroku ejecutará el comando de migración y tendremos el proceso como se debe.

Usando release phase se pueden ejecutar otras tareas necesarias. En este caso la necesidad de correr migraciones queda suplida gracias a esta característica.

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.

Responder

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .