On parle beaucoup de Grille, 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?
Bases du rack
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 rend 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.
Avantages du 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 tout. 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.
Pourquoi le rack est-il important?
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 à 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. Le middleware prend simplement la demande de Rack, la transmet à votre application, récupère son réponse, ajoutez-y quelque chose ou filtrez-le ou quelque chose dans ce sens, puis renvoyez la réponse à Grille. Cela peut être utilisé pour implémenter de petites fonctionnalités très intéressantes comme un enregistreur indépendant du serveur ou une demande vérificateur d'esprit, 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, elles peuvent être implémentées en tant que middleware avec Rack.