Comment utiliser l'application Rack dans Ruby

dans le article précédent, vous avez appris ce qu'est Rack. Maintenant, il est temps de commencer à utiliser Rack et de diffuser quelques pages.

Bonjour le monde

Commençons par un "Bonjour le monde”Application. Cette application retournera, quel que soit le type de demande qu'elle envoie, un code d'état de 200 (qui est en langage HTTP pour «OK») et la chaîne "Bonjour le monde" comme le corps.

Avant d'examiner le code suivant, réfléchissez à nouveau aux exigences auxquelles toute application Rack doit répondre.

Une application Rack est un objet Ruby qui répond à la méthode d'appel, prend un seul paramètre de hachage et renvoie un tableau contenant le code d'état de la réponse, les en-têtes de réponse HTTP et le corps de la réponse sous la forme d'un tableau de cordes.
classe HelloWorld
appel def (env)
return [200, {}, ["Bonjour tout le monde!"]]
fin
fin

Comme vous pouvez le voir, un objet du type Bonjour le monde répondra à toutes ces exigences. Il le fait d'une manière très minime et pas terriblement utile, mais il répond à toutes les exigences.

instagram viewer

WEBrick

C'est assez simple, connectons-le maintenant à WEBrick (le serveur HTTP fourni avec Rubis). Pour ce faire, nous utilisons le Rack:: Gestionnaire:: WEBrick.run, passez-lui une instance de Bonjour le monde et le port pour fonctionner. Un serveur WEBrick sera désormais en cours d'exécution et Rack transmettra les requêtes entre le serveur HTTP et votre application.

Remarque, ce n'est pas un moyen idéal pour lancer des choses avec Rack. Il n'est montré ici que pour faire fonctionner quelque chose avant de plonger dans une autre fonctionnalité de Rack appelée "Rackup", qui est montrée ci-dessous. L'utilisation de Rack:: Handler de cette manière présente quelques problèmes. Tout d'abord, ce n'est pas très configurable. Tout est codé en dur dans le script. Deuxièmement, comme vous le remarquerez si vous exécutez le script suivant, vous ne pouvez pas tuer le programme. Il ne répondra pas à Ctrl-C. Si vous exécutez cette commande, fermez simplement la fenêtre du terminal et ouvrez-en une nouvelle.

#! / usr / bin / env rubis
nécessite un «rack»
classe HelloWorld
appel def (env)
return [200, {}, ["Bonjour tout le monde!"]]
fin
fin
Rack:: Gestionnaire:: WEBrick.run (
HelloWorld.new,
: Port => 9000
)

Rackup

Bien que cela soit assez facile à faire, ce n'est pas la façon dont Rack est normalement utilisé. Le rack est normalement utilisé avec un outil appelé rackup. Rackup fait plus ou moins ce qui était dans la section inférieure du code ci-dessus, mais d'une manière plus utilisable. Rackup est exécuté à partir de la ligne de commande et reçoit un .ru "Fichier Rackup." Il s'agit simplement d'un script Ruby qui, entre autres, alimente une application vers Rackup.

Un fichier Rackup très basique pour ce qui précède ressemblerait à ceci.

classe HelloWorld
appel def (env)
revenir [
200,
{'Content-Type' => 'text / html'},
["Bonjour le monde!"]
]
fin
fin
exécutez HelloWorld.new

Tout d'abord, nous avons dû apporter une toute petite modification à la Bonjour le monde classe. Rackup exécute une application middleware appelée Rack:: Lint qui vérifie les réponses. Toutes les réponses HTTP doivent avoir un Type de contenu en-tête, donc cela a été ajouté. Ensuite, la dernière ligne crée simplement une instance de l'application et la transmet au courir méthode. Idéalement, votre application ne doit pas être entièrement écrite dans le fichier Rackup, ce fichier doit y inclure votre application et en créer une instance de cette façon. Le fichier Rackup est juste de la «colle», aucun code d'application réel ne devrait être là.

Si vous exécutez la commande rackup helloworld.ru, il démarrera un serveur sur le port 9292. Il s'agit du port Rackup par défaut.

Rackup a quelques fonctionnalités plus utiles. Tout d'abord, des choses comme le port peuvent être modifiées sur la ligne de commande ou sur une ligne spéciale du script. Sur la ligne de commande, passez simplement un -p port paramètre. Par exemple: rackup -p 1337 helloworld.ru. A partir du script lui-même, si la première ligne commence par #\, puis il est analysé comme la ligne de commande. Vous pouvez donc également définir des options ici. Si vous vouliez exécuter sur le port 1337, la première ligne du fichier Rackup pourrait lire # \ -p 1337.

instagram story viewer