Instalación de Dependencias para el Desarrollo del Núcleo de Rails

Esta guía cubre cómo configurar un entorno para el desarrollo del núcleo de Ruby on Rails.

Después de leer esta guía, sabrás:


1 Otras Formas de Configurar Tu Entorno

Si no deseas configurar Rails para el desarrollo en tu máquina local, puedes usar Codespaces, el Plugin Remoto de VS Code, o rails-dev-box. Aprende más sobre estas opciones aquí.

2 Desarrollo Local

Si deseas desarrollar Ruby on Rails localmente en tu máquina, consulta los pasos a continuación.

2.1 Instalar Git

Ruby on Rails utiliza Git para el control del código fuente. La página principal de Git tiene instrucciones de instalación. Hay una variedad de recursos en línea que te ayudarán a familiarizarte con Git.

2.2 Clonar el Repositorio de Ruby on Rails

Navega a la carpeta donde deseas descargar el código fuente de Ruby on Rails (creará su propio subdirectorio rails) y ejecuta:

$ git clone https://github.com/rails/rails.git
$ cd rails

2.3 Instalar Herramientas y Servicios Adicionales

Algunas pruebas de Rails dependen de herramientas adicionales que necesitas instalar antes de ejecutar esas pruebas específicas.

Aquí está la lista de dependencias adicionales de cada gema:

  • Action Cable depende de Redis
  • Active Record depende de SQLite3, MySQL y PostgreSQL
  • Active Storage depende de Yarn (además Yarn depende de Node.js), ImageMagick, libvips, FFmpeg, muPDF, Poppler, y en macOS también XQuartz.
  • Active Support depende de memcached y Redis
  • Railties dependen de un entorno de ejecución de JavaScript, como tener Node.js instalado.

Instala todos los servicios que necesitas para probar adecuadamente la gema completa a la que realizarás cambios. Cómo instalar estos servicios para macOS, Ubuntu, Fedora/CentOS, Arch Linux y FreeBSD se detalla a continuación.

NOTA: La documentación de Redis desaconseja las instalaciones con gestores de paquetes ya que suelen estar desactualizadas. Instalar desde el código fuente y poner en marcha el servidor es sencillo y está bien documentado en la documentación de Redis.

NOTA: Las pruebas de Active Record deben pasar al menos para MySQL, PostgreSQL y SQLite3. Tu parche será rechazado si se prueba contra un solo adaptador, a menos que el cambio y las pruebas sean específicos del adaptador.

A continuación puedes encontrar instrucciones sobre cómo instalar todas las herramientas adicionales para diferentes sistemas operativos.

2.3.1 macOS

En macOS puedes usar Homebrew para instalar todas las herramientas adicionales.

Para instalar todo ejecuta:

$ brew bundle

También necesitarás iniciar cada uno de los servicios instalados. Para listar todos los servicios disponibles ejecuta:

$ brew services list

Luego puedes iniciar cada uno de los servicios uno por uno de esta manera:

$ brew services start mysql

Reemplaza mysql con el nombre del servicio que deseas iniciar.

2.3.2 Ubuntu

Para instalar todo ejecuta:

$ sudo apt-get update
$ sudo apt-get install sqlite3 libsqlite3-dev mysql-server libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils

# Instalar Yarn
# Usa este comando si no tienes instalado Node.js
# ref: https://github.com/nodesource/distributions#installation-instructions
$ sudo mkdir -p /etc/apt/keyrings
$ curl --fail --silent --show-error --location https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
$ sudo apt-get update
$ sudo apt-get install -y nodejs

# Una vez que hayas instalado Node.js, instala el paquete npm de yarn
$ sudo npm install --global yarn

2.3.3 Fedora o CentOS

Para instalar todo ejecuta:

$ sudo dnf install sqlite-devel sqlite-libs mysql-server mysql-devel postgresql-server postgresql-devel redis memcached ImageMagick ffmpeg mupdf libxml2-devel vips poppler-utils

# Instalar Yarn
# Usa este comando si no tienes instalado Node.js
# ref: https://github.com/nodesource/distributions#installation-instructions-1
$ sudo dnf install https://rpm.nodesource.com/pub_20/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
$ sudo dnf install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1

# Una vez que hayas instalado Node.js, instala el paquete npm de yarn
$ sudo npm install --global yarn

2.3.4 Arch Linux

Para instalar todo ejecuta:

$ sudo pacman -S sqlite mariadb libmariadbclient mariadb-clients postgresql postgresql-libs redis memcached imagemagick ffmpeg mupdf mupdf-tools poppler yarn libxml2 libvips poppler
$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo systemctl start redis mariadb memcached

NOTA: Si estás ejecutando Arch Linux, MySQL ya no es compatible, por lo que necesitarás usar MariaDB en su lugar (ver este anuncio).

2.3.5 FreeBSD

Para instalar todo ejecuta:

$ sudo pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick6 ffmpeg mupdf yarn libxml2 vips poppler-utils
# portmaster databases/redis

O instala todo a través de ports (estos paquetes están ubicados en la carpeta databases).

NOTA: Si encuentras problemas durante la instalación de MySQL, por favor consulta la documentación de MySQL.

2.3.6 Debian

Para instalar todas las dependencias ejecuta:

$ sudo apt-get install sqlite3 libsqlite3-dev default-mysql-server default-libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils

NOTA: Si estás ejecutando Debian, MariaDB es el servidor MySQL predeterminado, así que ten en cuenta que puede haber diferencias.

2.4 Configuración de la Base de Datos

Hay un par de pasos adicionales requeridos para configurar los motores de base de datos necesarios para ejecutar pruebas de Active Record.

La autenticación de PostgreSQL funciona de manera diferente. Para configurar el entorno de desarrollo con tu cuenta de desarrollo, en Linux o BSD, solo tienes que ejecutar:

$ sudo -u postgres createuser --superuser $USER

y para macOS:

$ createuser --superuser $USER

NOTA: MySQL creará los usuarios cuando se creen las bases de datos. La tarea asume que tu usuario es root sin contraseña.

Luego, necesitas crear las bases de datos de prueba tanto para MySQL como para PostgreSQL con:

$ cd activerecord
$ bundle exec rake db:create

También puedes crear bases de datos de prueba para cada motor de base de datos por separado:

$ cd activerecord
$ bundle exec rake db:mysql:build
$ bundle exec rake db:postgresql:build

y puedes eliminar las bases de datos usando:

$ cd activerecord
$ bundle exec rake db:drop

NOTA: Usar la tarea Rake para crear las bases de datos de prueba asegura que tengan el conjunto de caracteres y la intercalación correctos.

Si estás usando otra base de datos, verifica el archivo activerecord/test/config.yml o activerecord/test/config.example.yml para obtener información de conexión predeterminada. Puedes editar activerecord/test/config.yml para proporcionar credenciales diferentes en tu máquina, pero no debes enviar ninguno de esos cambios de vuelta a Rails.

2.5 Instalar Dependencias de JavaScript

Si instalaste Yarn, necesitarás instalar las dependencias de JavaScript:

$ yarn install

2.6 Instalación de Dependencias de Gemas

Las gemas se instalan con Bundler que se incluye por defecto con Ruby.

Para instalar el Gemfile para Rails ejecuta:

$ bundle install

Si no necesitas ejecutar pruebas de Active Record, puedes ejecutar:

$ bundle install --without db

2.7 Contribuir a Rails

Después de haber configurado todo, lee cómo puedes comenzar a contribuir.


Comentarios

Se te anima a ayudar a mejorar la calidad de esta guía.

Por favor contribuye si ves algún error tipográfico o errores fácticos. Para comenzar, puedes leer nuestra sección de contribuciones a la documentación.

También puedes encontrar contenido incompleto o cosas que no están actualizadas. Por favor agrega cualquier documentación faltante para main. Asegúrate de revisar Guías Edge primero para verificar si los problemas ya están resueltos o no en la rama principal. Revisa las Guías de Ruby on Rails para estilo y convenciones.

Si por alguna razón detectas algo que corregir pero no puedes hacerlo tú mismo, por favor abre un issue.

Y por último, pero no menos importante, cualquier tipo de discusión sobre la documentación de Ruby on Rails es muy bienvenida en el Foro oficial de Ruby on Rails.