Cómo Instalar y Usar una Gema en Ruby on Rails

Cuando estas trabajando con el framework Ruby on Rails.

En ocasiones necesitas instalar una gema o paquete que añada cierta característica a tu proyecto.

En este tutorial te enseñaré a Cómo Instalar y Usar una Gema en Ruby on Rails, vamos con ello.

Instalando y usando una gema o paquete en ruby on rails
Cada gema o paquete tiene un peso diferente

Para este tutorial usaré la gema simple-random, esta gema me permite generar números aleatorios.

Creación de Nuevo Proyecto

Creo un proyecto con el nombre miapp, tu le puedes dar el nombre que desees.

Para crear el proyecto ejecuto el siguiente comando en mi consola o terminal de comandos:

rails new miapp

      create
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  .gitattributes
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in D:/contenidos/nc/tutoriales/blog/miapp/.git/
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/stylesheets/application.css
...
...
(Continua la creación del proyecto)
...
...
Using websocket 1.2.11
Using selenium-webdriver 4.23.0
Using sprockets 4.2.1
Using sprockets-rails 3.5.2
Using sqlite3 1.7.3 (x64-mingw-ucrt)
Using stimulus-rails 1.3.3
Using turbo-rails 2.0.6
Using tzinfo-data 1.2024.1
Using web-console 4.2.1
Bundle complete! 14 Gemfile dependencies, 84 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Run turbo:install:redis to switch on Redis and use it in development for turbo streams

Luego de ejecutar el comando anterior, Ruby on Rails me ha creado la siguiente estructura de directorios y archivos para el proyecto:

/miapp
├── /app  
├── /bin
├── /config
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .ruby-version
├── config.ru
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── Rakefile
├── README.md

Ingresamos al directorio del proyecto ejecutando el siguiente comando en nuestra consola o terminal de comandos:

# Comando para ingresar al directorio del proyecto
cd miapp

Instalación de la Gema o Paquete

En Ruby on Rails podemos instalar una gema o paquete de 2 formas:

Mediante un Comando

Para instalar nuestro paquete usando un comando, debemos usar el comando gem install ‘nombre de la gema o paquete.

Por ejemplo para instalar la gema simple-random, ejecutamos el siguiente comando:

gem install simple-random

Fetching simple-random-1.0.3.gem
Using rubygems directory: C:/Users/jrclu/.local/share/gem/ruby/3.2.0
Successfully installed simple-random-1.0.3
Parsing documentation for simple-random-1.0.3
Installing ri documentation for simple-random-1.0.3
Done installing documentation for simple-random after 0 seconds
1 gem installed

Luego de ejecutar el comando anterior ya tienes instalada la gema o paquete correctamente.

Mediante el archivo Gemfile

Si no puedes instalar tu gema o paquete mediante comando, también puedes usar el archivo Gemfile.

Este archivo lo crea automáticamente Ruby on Rails, luego de crear el proyecto:

/miapp
├── /app  
├── /bin
├── /config
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .ruby-version
├── config.ru
├── Dockerfile
├── Gemfile // Abre este archivo
├── Gemfile.lock
├── Rakefile
├── README.md

Abre el archivo Gemfile y coloca la siguiente línea en el:

# Código para instalar la gema o el paquete 'simple-random'
gem 'simple-random', '~> 1.0', '>= 1.0.3'

En el archivo Gemfile encontrarás otras gemas que Ruby on Rails has instalado para que funcione correctamente, no las toques.

Por último ejecutamos el siguiente comando para instalar la nueva gema o dependencia que añadimos al archivo Gemfile:

bundle install

Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rake 13.2.1
Using base64 0.2.0
Using bigdecimal 3.1.8     
Using concurrent-ruby 1.3.4
... 
... 
(Continua la instalación de la gema o paquete) 
... 
...
Using stimulus-rails 1.3.3
Using turbo-rails 2.0.6
Using web-console 4.2.1
Using rails 7.1.3.4
Installing simple-random 1.0.3
Bundle complete! 15 Gemfile dependencies, 85 gems now installed.

Use `bundle info [gemname]` to see where a bundled gem is installed.

El comando bundle install nos instala nuestra gema o paquete sin problemas.

Asimismo el comando bundle install nos instala otras gemas que son necesarias para que Ruby on Rails trabaje sin problemas.

Usando la Gema o Paquete

Ya que la gema que instalamos genera números aleatorios.

Lo que haré es mostrarlos en una página o vista HTML.

Creación del Controlador

Creo un controlador ejecutando el siguiente comando (le pondré de nombre numeros, tu le puedes poner el nombre que desees):

rails g controller numeros index leer crear actualizar

      create  app/controllers/numeros_controller.rb
       route  get 'numeros/index'
              get 'numeros/leer'
              get 'numeros/crear'
              get 'numeros/actualizar'
      invoke  erb
      create    app/views/numeros
      create    app/views/numeros/index.html.erb
      create    app/views/numeros/leer.html.erb
      create    app/views/numeros/crear.html.erb
      create    app/views/numeros/actualizar.html.erb
      invoke  test_unit
      create    test/controllers/numeros_controller_test.rb
      invoke  helper
      create    app/helpers/numeros_helper.rb
      invoke    test_unit

Luego de ejecutar el comando anterior se me ha creado el archivo numeros_controller.rb en miapp > app > controllers > numeros_controller.rb:

/miapp 
├── /app
    ├── /assets 
    ├── /channels 
    ├── /controllers 
        ├── /concerns 
        ├── application_controller.rb 
        ├── postres_controller.rb // Se ha creado este Archivo
    ├── /helpers
    ├── /javascript
    ├── /jobs
    ├── /mailers
    ├── /models
    ├── /views 
├── /bin
├── /config
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├──  .gitignore
├──  .ruby-version
├──  config.ru
├──  Gemfile 
├──  Gemfile.lock
├──  package.json
├──  Rakefile
├──  Gemfile.lock
├──  README.md

Abrimos el archivo numeros_controller.rb y dentro de la función o método index cargamos nuestra página HTML.

Asimismo, hacemos uso de la gema o paquete simple-random (He colocado comentarios para explicar que hacen las líneas del código):

class NumerosController < ApplicationController

   # Ruta principal de la vista
   @root_url = "/numeros/index"

   # Soporte para layouts
   layout 'application'
 
   # Método para cargar la página HTML
   def index

    # Instanciamos el paquete 'simple-random'
    r = SimpleRandom.new 

    # Generamos un número aleatorio
    @numero_aleatorio = r.set_seed

   end 

  def leer
  end

  def crear
  end

  def actualizar
  end
end

Configuración de la Ruta

Abrimos el archivo routes.rb que se encuentra en config > routes.rb:

/miapp
├── /app
├── /bin
├── /config
    ├── /environments
    ├── /initializers
    ├── /locales
    ├── application.rb 
    ├── boot.rb 
    ├── cable.yml
    ├── credentials.yml.enc
    ├── database.yml 
    ├── environment.rb
    ├── importmap.rb
    ├── master.key 
    ├── puma.rb
    ├── routes.rb // Abre este archivo
    ├── storage.yml 
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├──  .gitignore
├──  .ruby-version
├──  config.ru
├──  Gemfile 
├──  Gemfile.lock
├──  package.json
├──  Rakefile
├──  Gemfile.lock
├──  README.md

Dentro del archivo routes.rb sobre el final agregamos la ruta root “numeros#index”:

Rails.application.routes.draw do

  get 'numeros/index' # Ruta de la vista HTML 
  get 'numeros/leer'
  get 'numeros/crear'
  get 'numeros/actualizar'
  # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

  # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
  # Can be used by load balancers and uptime monitors to verify that the app is live.
  get "up" => "rails/health#show", as: :rails_health_check

  # Defines the root path route ("/")
  root "numeros#index" # Ruta para la vista HTML

end

Creación de la Vista HTML

Por ultimo abrimos el archivo index.html.rb que se encuentra en miapp > app > views > numeros > index.html.rb:

/miapp
├── /app
    ├── /assets 
    ├── /channels 
    ├── /controllers 
    ├── /helpers
    ├── /javascript
    ├── /jobs
    ├── /mailers
    ├── /models
    ├── /views
        ├── /layouts
        ├── /numeros 
            ├── actualizar.html.rb 
            ├── crear.html.rb 
            ├── index.html.rb // Abre este archivo 
            ├── leer.html.rb 
├── /bin
├── /config
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├──  .gitignore
├──  .ruby-version
├──  config.ru
├──  Gemfile 
├──  Gemfile.lock
├──  package.json
├──  Rakefile
├──  Gemfile.lock
├──  README.md

Dentro del archivo index.html.rb agregamos lo siguiente:

<h1>Cómo Instalar y Usar una Gema en Ruby on Rails</h1>

<p>Número aleatorio:</p>

<!-- Mostramos un número aleatorio -->
<%= @numero_aleatorio %>

Ejecutando el Servidor de Ruby on Rails

Iniciamos el servidor de Ruby on Rails con el siguiente comando:

rails server

=> Booting Puma
=> Rails 7.1.3.4 application starting in development
=> Run `bin/rails server --help` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Puma version: 6.4.2 (ruby 3.2.2-p53) ("The Eagle of Durango")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 26564
* Listening on http://[::1]:3000
* Listening on http://127.0.0.1:3000
Use Ctrl-C to stop

Si vamos a la ruta local http://localhost:3000/ en nuestro navegador.

Podemos ver que el número aleatorio de genera sin problemas:

Paquete o gema usada correctamente en Ruby on Rails
Hay gemas o paquetes que son mas pesados, toman un poco más de tiempo en instalarse

Así de fácil puedes  Instalar y Usar una Gema o Paquete en Ruby on Rails.

Conclusión

En este tutorial has aprendido a Cómo Instalar y Usar una Gema en Ruby on Rails.

Te será de guía para que instales tus gemas o paquetes en el framework Ruby on Rails.

Recuerda que siempre debes practicar mucho para poder dominar Ruby on Rails.

Nota(s)

  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.