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:
Una vez conectado a la consola del droplet vamos a:
- Instalar rvm y ruby
- Instalar Rails
- Instalar PostgreSQL
- Clonar el repositorio del proyecto
- Instalar las dependencias del proyecto
- 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>.
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
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