Se habla mucho sobre Rack, pero a menos que usted mismo sea un autor de marcos, rara vez lo ve. Entonces, ¿qué es Rack? ¿Y por qué, como desarrollador de aplicaciones, debería importarle??
El estante es un tipo de middleware. Se encuentra entre su aplicación web y el servidor web. Maneja todas las llamadas API específicas del servidor, pasa la solicitud HTTP y todos los parámetros del entorno en un hash y devuelve la respuesta de su aplicación al servidor. En otras palabras, su aplicación no necesita saber cómo hablar con un servidor HTTP, necesita saber cómo hablar con Rack.
Esto tiene una serie de ventajas. Primero, hablar con Rack es fácil (como verás a continuación). En segundo lugar, dado que solo necesita saber cómo hablar con Rack, y Rack sabe cómo hablar con muchos servidores HTTP diferentes, su aplicación se ejecutará en cualquiera de estos servidores HTTP. Rack es como un adaptador universal para aplicaciones web.
Las aplicaciones Rack en sí mismas no son nada especial. De hecho, la API de Rack es tan simple que se puede describir en una sola oración:
Una aplicación Rack es cualquier objeto Ruby que responde al llamada , toma un único parámetro hash y devuelve una matriz que contiene el código de estado de respuesta, los encabezados de respuesta HTTP y el cuerpo de la respuesta como una matriz de cadenas.
Eso es practicamente todo. Parece demasiado simple para ser verdad, o al menos demasiado simple para ser útil, pero cuando realmente se trata de eso, eso es todo lo que realmente estás haciendo cuando estás hablando con servidores HTTP.
Pero a la pregunta real: ¿por qué, como programador de aplicaciones, debería preocuparse por Rack? Bueno, primero, siempre hay iluminación para entender cómo funciona su marco. Pero lo más importante, hay cosas útiles que puede hacer con Rack. Lo más importante: middleware.
Ahora, esto suena un poco extraño. Pero una capa adicional entre su aplicación y Rack puede ser algo bueno e implementar características que solo desordenarían su aplicación. Lo que hace este middleware es simplemente tomar la solicitud de Rack, pasarla a su aplicación, obtener su respuesta, agregarle algo o filtrarla o algo por el estilo y luego devolver la respuesta a Rack. Esto se puede usar para implementar pequeñas características muy interesantes como un registrador independiente del servidor, o un verificador de cordura de solicitud, o un pequeño middleware que envía un correo electrónico a un administrador cada vez que su aplicación regresa con un 404. Ninguna de estas características necesita abarrotar su aplicación, se pueden implementar como middleware con Rack.