Was ist Rack?

Über Rack wird viel geredet, aber wenn Sie nicht selbst Framework-Autor sind, werden Sie es selten sehen. Was ist Rack? Und warum sollten Sie sich als Anwendungsentwickler dafür interessieren??

Rack-Grundlagen

Rack ist eine Art Middleware. Es befindet sich zwischen Ihrer Webanwendung und dem Webserver. Es verarbeitet alle serverspezifischen API-Aufrufe, leitet die HTTP-Anforderung und alle Umgebungsparameter in einem Hash weiter und gibt die Antwort Ihrer Anwendung an den Server zurück. Mit anderen Worten, Ihre Anwendung muss nicht wissen, wie sie mit einem HTTP-Server kommunizieren soll, sondern muss wissen, wie sie mit Rack kommunizieren soll.

Vorteile des Racks

Dies hat eine Reihe von Vorteilen. Erstens ist es einfach, mit Rack zu sprechen (siehe unten). Zweitens kann Ihre Anwendung auf jedem dieser HTTP-Server ausgeführt werden, da Sie nur wissen müssen, wie man mit Rack kommuniziert und wie man mit vielen verschiedenen HTTP-Servern kommuniziert. Rack ist wie ein Universaladapter für Webanwendungen.

Die Rack-Anwendungen selbst sind nichts Besonderes. Tatsächlich ist die Rack-API so einfach, dass sie in einem einzigen Satz beschrieben werden kann:

Eine Rack-Anwendung ist ein beliebiges Ruby-Objekt, das auf den reagiert Anruf Diese Methode verwendet einen einzelnen Hash-Parameter und gibt ein Array zurück, das den Antwortstatuscode, HTTP-Antwortheader und den Antworttext als Array von Zeichenfolgen enthält.

Das wars so ziemlich. Es klingt zu einfach, um wahr zu sein, oder zumindest zu einfach, um nützlich zu sein, aber wenn es wirklich darauf ankommt, ist das alles, was Sie wirklich tun, wenn Sie mit HTTP-Servern sprechen.

Warum ist Rack wichtig??

Aber weiter zur eigentlichen Frage: Warum sollten Sie sich als Anwendungsprogrammierer für Rack interessieren? Zunächst einmal ist es immer aufschlussreich zu verstehen, wie Ihr Framework funktioniert. Aber was noch wichtiger ist, es gibt nützliche Dinge, die Sie mit Rack tun können. Am wichtigsten: Middleware.

Das klingt jetzt etwas seltsam. Eine zusätzliche Schicht zwischen Ihrer Anwendung und dem Rack kann jedoch eine gute Sache sein und Funktionen implementieren, die Ihre Anwendung nur überladen würden. Diese Middleware nimmt einfach die Anforderung von Rack entgegen, leitet sie an Ihre Anwendung weiter, empfängt die Antwort, fügt sie hinzu oder filtert sie oder ähnliches und leitet die Antwort an Rack zurück. Dies kann verwendet werden, um sehr interessante kleine Funktionen wie einen serverunabhängigen Protokollierer oder einen Anforderungsprüfer oder eine kleine Middleware zu implementieren, die einem Administrator jedes Mal eine E-Mail sendet, wenn Ihre Anwendung mit einer 404 zurückkommt Anwendung können sie als Middleware mit Rack implementiert werden.