Cómo usar la aplicación Rack en Ruby

En el Artículo anterior, aprendiste lo que es Rack. Ahora, es hora de comenzar a usar Rack y publicar algunas páginas.

Hola Mundo

Primero, comencemos con un "Hola Mundo" solicitud. Esta aplicación, sin importar el tipo de solicitud que se le dé, regresará con un código de estado de 200 (que es HTTP-speak para "OK") y la cadena "Hola Mundo" como el cuerpo

Antes de examinar el siguiente código, considere nuevamente los requisitos que debe cumplir cualquier aplicación Rack.

Una aplicación Rack es cualquier objeto Ruby que responde al método de 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 instrumentos de cuerda.
clase HelloWorld
llamada de def (env)
volver [200, {}, ["¡Hola mundo!"]]
final
final

Como puede ver, un objeto del tipo Hola Mundo cumplirá con todos estos requisitos. Lo hace de una manera mínima y no muy útil, pero cumple con todos los requisitos.

WEBrick

instagram viewer

Eso es bastante simple, ahora vamos a conectarlo a WEBrick (el servidor HTTP que viene con Rubí). Para hacer esto, usamos el Rack:: Manejador:: WEBrick.run método, páselo una instancia de Hola Mundo y el puerto para correr. Ahora se ejecutará un servidor WEBrick y Rack pasará solicitudes entre el servidor HTTP y su aplicación.

Tenga en cuenta que esta no es una forma ideal de lanzar cosas con Rack. Aquí solo se muestra para ejecutar algo antes de sumergirse en otra función de Rack llamada "Rackup", que se muestra a continuación. Usar Rack:: Handler de esta manera tiene algunos problemas. Primero, no es muy configurable. Todo está codificado en el guión. En segundo lugar, como notará si ejecuta el siguiente script, no puede eliminar el programa. No responderá a Ctrl-C. Si ejecuta este comando, simplemente cierre la ventana de terminal y abra una nueva.

#! / usr / bin / env ruby
requiere 'estante'
clase HelloWorld
llamada de def (env)
volver [200, {}, ["¡Hola mundo!"]]
final
final
Rack:: Manejador:: WEBrick.run (
HolaMundo.nuevo,
: Puerto => 9000
)

Acumular

Si bien esto es bastante fácil de hacer, no es cómo se usa normalmente Rack. Rack se usa normalmente con una herramienta llamada acumular. Rackup hace más o menos lo que estaba en la sección inferior del código anterior, pero de una manera más útil. Rackup se ejecuta desde la línea de comandos y recibe un .ru "Archivo de rackup". Esto es solo un script de Ruby que, entre otras cosas, alimenta una aplicación a Rackup.

Un archivo Rackup muy básico para lo anterior se vería así.

clase HelloWorld
llamada de def (env)
regreso [
200,
{'Content-Type' => 'text / html'},
["¡Hola Mundo!"]
]
final
final
ejecutar HelloWorld.new

Primero, tuvimos que hacer un pequeño cambio en el Hola Mundo clase. Rackup ejecuta una aplicación de middleware llamada Estante:: pelusa que la cordura verifica las respuestas. Todas las respuestas HTTP deben tener un Tipo de contenido encabezado, por lo que se agregó. Luego, la última línea solo crea una instancia de la aplicación y la pasa al correr método. Idealmente, su aplicación no debería estar escrita completamente dentro del archivo Rackup, este archivo debería requerir su aplicación y crear una instancia de esa manera. El archivo Rackup es solo "pegamento", no debe haber ningún código de aplicación real.

Si ejecutas el comando rackup helloworld.ru, iniciará un servidor en el puerto 9292. Este es el puerto Rackup predeterminado.

Rackup tiene algunas características más útiles. Primero, cosas como el puerto se pueden cambiar en la línea de comando, o en una línea especial en el script. En la línea de comando, simplemente pase un -p puerto parámetro. Por ejemplo: rackup -p 1337 helloworld.ru. Desde el script en sí, si la primera línea comienza con #\, luego se analiza igual que la línea de comando. Así que también puedes definir opciones aquí. Si desea ejecutar en el puerto 1337, la primera línea del archivo Rackup podría leer # \ -p 1337.

instagram story viewer