Categorías
Desarrollo Ruby on Rails

Aventuras sobre rieles – Parte 1

rvm

Para poder arrancar con ruby es bastante necesario conocer rvm. rvm es un administrador de versiones para el lenguaje ruby, el cual permite mantener y organizar diferentes versiones del lenguaje y sus componentes en el mismo equipo. Esto es muy importante para el desarrollo en producción ya que es común que el cambio de versión de paquetes o del mismo lenguaje genere fallos en el código de la aplicación. También permite que en el mismo equipo se pueda trabajar en proyectos que usan diferentes versiones de componentes.

rvm permite tanto trabajar con diferentes versiones del lenguaje como con diferentes versiones de componentes o gemas, llamados gemset. A diferencia de node, por ejemplo, donde los módulos se gestionan por defecto por proyecto (en la conocida carpeta node_modules), en ruby se guardan globalmente. Esto tiene la ventaja de ocupar menos espacio en disco, pero agregan la complicación de que trabajar con diferentes versiones en diferentes proyectos forzosamente obliga a actualizar las librerías, lo cual no siempre es una opción. rvm resuelve esto con los gemset, estos son diferentes repositorios globales para diferentes conjuntos de librerías. Tener en cuenta que los gemset funcionan por versión de ruby. Es decir si instalo una nueva versión de ruby y ya tengo algún gemset creado debo crear un nuevo (esto es lógico ya que los componentes tienen también dependencia con el lenguaje).

Trabajando con rvm

# Instalar la versión más reciente de ruby
$ rvm install ruby --latest

# Instalar la versión 2.7.1
$ rvm install ruby 2.7.1

# Listar las versiones instaladas, indicando cual es
#  la que está en uso
$ rvm list

# Utilizar una versión específica de ruby
$ rvm use 2.7.1

# Crear un nuevo gemset
$ rvm gemset create nombre-gemset

# Listar los gemset indicando cual está en uso
$ rvm gemset list

# Cambiar a un gemset específico
$ rvm gemset use nombre-gemset

# Cambiar a una versión y gemset específico
$ rvm use 2.7.0@nombre-gemset

Automatizando un poco el workflow

Todo esto está muy bien pero queda un pequeño inconveniente. Una vez que comenzamos a trabajar y tenemos varios proyectos nos damos cuenta que cada vez que cambiamos de proyecto debemos recordar que versión y gemset utiliza el mismo y cambiar manualmente. Lo mismo ocurre al reiniciar el ordenador que siempre inicia con la versión y gemset por defecto.

Para solucionar esto en la carpeta del proyecto se deben crear los archivos .ruby-version y .ruby-gemeset conteniendo una única línea con el nombre de la versión o gemset, según corresponda. Al cambiar de carpeta automáticamente se seleccionará el entorno correcto.

Ahora sí

Antes de dar un peseo, es necesario tener los vagones. En esta guía voy a seguir la guía, valga la redundancia, de primeros pasos de la página oficial de Ruby on Rails, en mi caso sobre Ubuntu 20.04. Para iniciar tenemos que instalar los siguientes paquetes:

# - rvm
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ 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

# - ruby es el lenguaje en el cual está programado el
#     framework ruby on rails
rvm install ruby --latest

# - sqlite es una base de datos local que permite hacer
#     pruebas locales en forma rápida y sencilla
$ sudo apt install sqlite3

# - nodejs es un entorno de ejecución para javascript que
#     que permite usar javascript del lado del servidor
#     y además permite correr muchas utilidades para el
#     desarrollo
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt-get install -y nodejs

# - yarn es un gestor de dependencias
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt update && sudo apt install yarn

# - rails es el framework que hace la magia. gem es el
#     gestor de paquetes del lenguaje ruby
# En este punto, previo a instalar rails, es posible crear
#   un nuevo gemset o instalarlo en el repositorio global
$ gem install rails

Finalmente ya estamos en condiciones de crear el proyecto. Esto lo hacemos simplemente utilizando el comando rails, el cual se utilizará bastante durante todo el desarrollo:

$ rails new blog

Esto creará la carpeta del proyecto (blog en este caso) y dentro todos los archivos que componen el esqueleto base del proyecto… y será varios archivos.

En el próximo artículo vamos a recorrer cada uno de los archivos y carpetas creados para entender porqué están ahí, conociendo varias tecnologías en el camino.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *