Cómo subir mi aplicación de Rails a Digital Ocean

Por Andrés Howard | June 23

Para subir mi aplicación de Rails a Digital Ocean tengo que crear un droplet que es el nombre que le pone Digital Ocean a los servidores y conectarme por consola al mismo. El siguiente tutorial es una manera simplificada en la que la aplicación se va a ejecutar en modo Development, y por lo tanto el usuario va a ver mensajes de error con acceso a consola como lo hacemos nosotros mientras desarrollamos. Más adelante veremos cómo ejecutar la aplicación en modo Production que filtra esos comportamientos y se ejecuta pensando que el usuario no es un desarrollador.

Una vez conectado a la consola del droplet vamos a:
  1. Instalar rvm y ruby
  2. Instalar Rails
  3. Instalar PostgreSQL 
  4. Clonar el repositorio del proyecto
  5. Instalar las dependencias del proyecto
  6. Ejecutar la aplicación.

Veamos en detalle:

1. Instalar rvm y ruby

sudo apt update
sudo apt-get install software-properties-common
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt-get update
sudo apt-get install rvm

Reiniciar la consola y luego ejecutar

rvm install <ruby_version>
rvm --default use <ruby_version>

Importante: reemplaza <ruby_version> por la versión que está definida en tu proyecto en el archivo Gemfile. Debe haber una línea parecida a ruby "3.1.2", donde 3.1.2 sería la versión.

2. Instalar Rails

Partimos revisando qué versión de Rails usa nuestro proyecto, esto lo encontramos en el mismo Gemfile en una línea que debe ser parecida a gem "rails", "~> 7.0.4", con lo que la versión sería 7.0.4 y ese valor lo reemplazamos por <rails_version>.
 
sudo apt install nodejs npm
npm install --global yarn
gem install bundler
gem install rails -v <rails_version>

3. Instalar PostgreSQL 

sudo apt install postgresql postgresql-contrib libpq-dev

Luego tenemos que crear el usuario en la base de datos

sudo -u postgres psql
# CREATE USER <nombre_usuario> WITH SUPERUSER;
# \q

4. Clonar el repositorio del proyecto

Para clonar el repositorio hacemos

git clone <link_a_tu_repo>
cd <nombre_repo>

5. Instalar las dependencias del proyecto

bundle install
yarn install

6. Montar la base de datos

bin/rails db:create
bin/rails db:migrate
bin/rails db:seed

7. Ejecutar la aplicación.

Ejecutamos el servidor de rails acoplado a la IP 0.0.0.0 y al puerto 80

bin/rails s -b 0.0.0.0 -p 80

Con esto, si copiamos la IP del droplet en nuestro browser vamos a acceder a nuestra aplicación.

Importante considerar que la aplicación se ejecutará en modo development, por lo tanto si hay errores va a mostrar pantalla de debugging para ayudar a solucionar los errores. En un ambiente productivo no queremos que pase esto, imagínate a los usuarios les salen los detalles de los errores y les da consolas para interactuar con la aplicación!, por lo tanto es importante ejecutar la aplicación en modo productivo. Para esto se ejecuta

bin/rails s -b 0.0.0.0 -p 80 -e production


Pero es necesario configurar la master key de la aplicación, que queda fuera del alcance de este tutorial.


Fuente
https://levelup.gitconnected.com/deploy-rails-app-on-digitalocean-droplet-ca60cd3b84c0