¿Para quién es este artículo?

Este artículo está dirigido a persona que ya tienen conocimiento de ruby y rails pero que desean profundizar y entender como funciona por detrás Rails y otros frameworks MVC

 ¿Por qué deberías leer esto?

Porque aprenderás como funciona Rack el cuál es la base de la gran mayoría de frameworks escritos en Ruby, incluido Ruby On Rails, además entenderás como hace Rails para manejar el enrutamiento, y como funcionan realmente los controllers.

Debería construir mi propio framework?

Si, pero solo por motivos de aprendizaje, nunca deberías ocupar un framework propio para producción, es mucho más seguro y mantenible ocupar frameworks creados por la comunidad.

Capítulo 1, introducción a Rack

Empezamos con nuestra primera aplicación

Para crear la aplicación utilizaremos como base Rack, rack es una interfaz para crear web servers y es utilizada por la mayoría de los frameworks de ruby.

Como base crearemos una carpeta llamada miframework, para nuestra primera aplicación primero crearemos el archivo Gemfile, donde agregaremos la gema Rack

Luego instalaremo la gema Rack con bundle

Nuestro siguiente paso es crear la aplicación básica, para eso crearemos el archivo app.rb

  • El HTTP status code
  • Los headers
  • La respuesta (el body)

El siguiente paso es crear un archivo llamado config.ru que tiene la instrucciones para inicializar rack

Para ejecutar nuestra primera aplicación correremos rackup en el terminal y obtendremos un mensaje como el siguiente:

Al ingresar con el navegador a la dirección localhost:9292 y veremos nuestro mensaje de hola mundo

En el ejemplo ya vimos el body y el status code, pero todavía nos queda algo pendiente, los headers, esto nos permiten diversas acciones como especificar el tipo de contenido del documento y obtener una página web en lugar de un texto plano.

El hash env

Un función muy importante de Rack es la de capturar toda la información del entorno (environment) y la convierte en un hash que podemos utilizar, esta información nos permitirá realizar diversas acciones como redirigir al usuario dependiendo de la URL.

Al reiniciar el servidor y recargar la página podremos ver toda la información del entorno, dentro de este hash veremos diversos pares de clave valor, incluyendo los siguientes.

El request path

Sin llevar más lejos el ejemplo anterior podríamos mostrar un string con la ruta donde se encuentra el usuario actualmente utilizando el hash env con el key REQUEST_PATH

Manejando distintas rutas

Utilizando el mismo request_path y un if (o case) podemos dirigir al usuario a páginas específicas.

Si miramos ambos ejemplos veremos:

content-plain

En el primer caso vemos el resultado como texto plano, en el segundo como HTML.

content-html

En el siguiente capítulo estudiaremos como crear un router junto a un archivo de rutas.

 

Share Button

Director de DesafíoLatam. Ingeniero Civil Informático de la Universidad Federico Santa María. Emprendedor lean, dedicado al desarrollo de una mejor web con ruby on rails. Fanático de los números y las métricas, la música y la fotografía.