Paulo Tijero

Desplegando una aplicación Rails Api en Railway

Mostraré los pasos necesarios para configurar el servidor y hacer que la aplicación esté disponible para su uso en producción.

1. Asegúrese de tener una cuenta en Railway

Para empezar es necesario tener un cuenta, para hacerlo solo necesitas acceder a este enlace e iniciar session con tu cuenta de Github.

La integración con Github será beneficiosa para nosotros, ya que facilitará el proceso de despliegue

2. Crear un Proyecto en Railway

Una vez que iniciemos sesión, nos redirigirá hacia el dashboard de Railway, donde tendremos que crear un nuevo proyecto:

Nos mostrará una lista de opciones, nosotros elegiremos la opción de Deploy from Github repo

Railway aún no sabe con que repositorio nos vamos a conectar, por eso seleccionamos la opción de Configure GitHub App.

Esto nos llevara hacia Github para darle permisos a Railway de lectura de la lista de proyectos que quisiéramos desplegar en Railway.

En mi caso, solo dare permiso a un repositorio llamado rails-api y guardare los cambios. Luego me va a redireccionar a Railway listando el proyecto que quiero desplegar y lo seleccionamos.

Luego de seleccionarla tendremos la opción de desplegar la aplicación o de agregar variables de entorno, nosotros por ahora vamos a seleccionar la opción de desplegar la aplicación.

Y nuestra aplicación empezara a el proceso de despliegue:

3. Agregando variables de entorno.

Para que la aplicación despliegue con éxito sera necesario agregar algunas variables de entorno, vamos a ir construyendo un archivo JSON en el cual iremos agregando las variables de entorno que necesitaremos y cuando lo tengamos listo lo llevaremos a railway.

Si esta usando credentials (viene por defecto desde Rails 6) para configurar sus variables de entorno, sera necesario que agregue su master.key en railway. Este archivo solo lo tiene el que inicio el proyecto, este archivo por defecto esta agregado al .gitignore (⚠ este archivo nunca debe subirse a github), y se encuentra en la ruta name-project/config/master.key y contenido lo vamos a agregar al key => RAILS_MASTER_KEY:

{
  "RAILS_MASTER_KEY": "sdf56r2e...."
}

Luego también necesitaremos del SECRET_KEY_BASE, esta es una variable de entorno que se encuentra dentro de los credentials y se agrega por defecto en nuestro proyecto. Para saber cual es su valor tenemos que escribir ejecutar el comando EDITOR='code --wait' rails credentials:edit desde la raíz de nuestro proyecto, el comando abrirá un vista temporal de edición de credenciales:

Y copiamos el valor de secret_key_base y lo agregamos al JSON.

{
  "RAILS_MASTER_KEY": "sdf56r2e....",
  /////
  "SECRET_KEY_BASE": "631f3b144...."
  /////
}

Y por ultimo, agregaremos algunas credenciales necesarias para que Railway las use en producción

{
  "RAILS_MASTER_KEY": "sdf56r2e....",
  "SECRET_KEY_BASE": "631f3b144....",
  /////
  "LANG": "en_US.UTF-8",
  "RACK_ENV": "production",
  "RAILS_ENV": "production",
  "RAILS_LOG_TO_STDOUT": "enabled",
  "RAILS_SERVE_STATIC_FILES": "enabled"
  /////
}

🚧 Nota: Si tuviera variables de entorno adicionales, este es el momento para agregarlas

Y listo, tenemos el JSON con nuestras credenciales, ahora lo vamos a llevar hasta Railway. Tenemos que navegar hasta la pestaña Variables de nuestra aplicación y seleccionar la opción de RAW Editor:

Luego elegimos la opción de JSON, pegamos nuestras credenciales y guardamos. Al guardar las credenciales se volverá a ejecutar automáticamente un nuevo despliegue.

Y listo! ya tenemos nuestra primera aplicación desplegada en Railway.


Si estás trabajando con railway y tienes alguna duda o tema en particular que te gustaría que abordara en un artículo, no dudes en contactarme. Me encantaría recibir sugerencias de temas que te gustaría que escriba sobre railway.

Si aún no tienes una cuenta en railway, únete a través de mi link de referencia, si me ayudas registrándote con mi link, me comprometo a seguir escribiendo sobre railway y compartiendo consejos y trucos para sacar el mayor provecho de la plataforma.

👈 Y si usamos Railway como alternativa a Heroku?Conectando Postgres a una aplicación Rails en Railway (in progress) 👉