Es wird viel darüber geredet Gestell, aber wenn Sie nicht selbst ein Framework-Autor sind, sehen Sie es selten. 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 man mit einem HTTP-Server kommuniziert, sondern muss wissen, wie man mit Rack kommuniziert.
Vorteile von Rack
Dies hat eine Reihe von Vorteilen. Erstens ist es einfach, mit Rack zu sprechen (wie Sie unten sehen werden). Zweitens wird Ihre Anwendung auf jedem dieser HTTP-Server ausgeführt, da Sie nur wissen müssen, wie man mit Rack kommuniziert, und Rack weiß, wie man mit vielen verschiedenen HTTP-Servern kommuniziert. Rack ist wie ein universeller Adapter 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 das reagiert Anruf Methode, nimmt einen einzelnen Hash-Parameter und gibt ein Array zurück, das den Antwortstatuscode, die 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 etwas seltsam. Eine zusätzliche Ebene zwischen Ihrer Anwendung und dem Rack kann jedoch eine gute Sache sein und Funktionen implementieren, die Ihre Anwendung nur überladen. Diese Middleware nimmt einfach die Anfrage von Rack entgegen, leitet sie an Ihre Anwendung weiter und holt sie sich Antwort, fügen Sie etwas hinzu oder filtern Sie es oder etwas in dieser Richtung und geben Sie die Antwort zurück an Gestell. Dies kann verwendet werden, um sehr interessante kleine Funktionen wie einen serverunabhängigen Logger oder eine Anfrage zu implementieren Sanity Checker oder eine kleine Middleware, die einem Administrator jedes Mal eine E-Mail sendet, wenn Ihre Anwendung mit einem zurückkommt 404. Keine dieser Funktionen muss Ihre Anwendung überladen, sie können mit Rack als Middleware implementiert werden.