On parle beaucoup de Rack, mais à moins que vous ne soyez un auteur de framework vous-même, vous le voyez rarement. Alors qu'est-ce que Rack? Et pourquoi, en tant que développeur d'applications, devriez-vous vous en soucier?
Rack est une sorte de middleware. Il se situe entre votre application Web et le serveur Web. Il gère tous les appels d'API spécifiques au serveur, transmet la demande HTTP et tous les paramètres d'environnement dans un hachage et renvoie la réponse de votre application au serveur. En d'autres termes, votre application n'a pas besoin de savoir comment parler à un serveur HTTP, elle doit savoir comment parler à Rack.
Cela présente un certain nombre d'avantages. Tout d'abord, parler à Rack est facile (comme vous le verrez ci-dessous). Deuxièmement, puisque vous avez seulement besoin de savoir comment parler à Rack et que Rack sait comment parler à de nombreux serveurs HTTP différents, votre application s'exécutera sur l'un de ces serveurs HTTP. Le rack est comme un adaptateur universel pour les applications Web.
Les applications Rack elles-mêmes n'ont rien de spécial. En fait, l'API Rack est tellement simple, elle peut être décrite en une seule phrase:
Une application Rack est un objet Ruby qui répond à la 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 forme de tableau de chaînes.
C'est à peu près ça. Cela semble trop simple pour être vrai, ou du moins trop simple pour être utile, mais en fin de compte, c'est tout ce que vous faites vraiment lorsque vous parlez à des serveurs HTTP.
Mais passons à la vraie question: pourquoi, en tant que programmeur d'applications, devriez-vous vous soucier de Rack? Eh bien tout d'abord, il y a toujours des éclaircissements pour comprendre comment fonctionne votre framework. Mais plus important encore, il y a des choses utiles que vous pouvez faire avec Rack. Plus important encore: middleware.
Maintenant, cela semble un peu étrange. Mais une couche supplémentaire entre votre application et Rack peut être une bonne chose et implémenter des fonctionnalités qui ne feraient qu'encombrer votre application. Ce middleware fait simplement prendre la demande de Rack, la transmettre à votre application, obtenir sa réponse, y ajouter quelque chose ou la filtrer ou quelque chose dans ce sens, puis renvoyer la réponse à Rack. Cela peut être utilisé pour implémenter de petites fonctionnalités très intéressantes comme un enregistreur indépendant du serveur, ou un vérificateur d'esprit de demande, ou un petit middleware qui envoie un e-mail à un administrateur chaque fois que votre application revient avec un 404. Aucune de ces fonctionnalités n'a besoin d'encombrer votre application, ils peuvent être mis en œuvre en tant que middleware avec Rack.