Ist Ruby on Rails eine gute Technologie für den Aufbau eines MVP?
Ein Minimum Viable Product (MVP) ist einer der Grundsätze der Lean-Startup-Methodik. Das Ziel ist es, den Unternehmern zu helfen, den Lernprozess so schnell wie möglich zu beginnen...
Erfahren Sie mehr über die Rolle von Rack im Ökosystem von Ruby von unserem Experten und verbessern Sie Ihr Ruby-Spiel.
Bei der Arbeit mit Rubinrot Web Rahmenwerke ist es üblich, Dinge für selbstverständlich zu halten. Wir wissen, dass das Framework die HTTP-Anfragen bearbeitet und die Middleware-Logik für us. Je neugieriger wir werden, desto mehr fragen wir uns, was sich hinter den Kulissen abspielt, und da fangen wir an, von Rack zu hören.
Die Projekt wird beschrieben als “Eine modulare Ruby-Webserver-Schnittstelle”. Rack ist die Schnittstelle, mit der wir Webanwendungen erstellen können, die die API für Webserver, Web-Frameworks und Middleware.

Wie in der obigen Abbildung beschrieben, fungiert Rack als Vermittler zwischen unserer Webanwendung und dem Anwendungsserver, es verpackt die HTTP-Anfragen in die einfachste
Weise möglich.
Eine Rack-Anwendung ist ein Ruby-Objekt (keine Klasse), das auf aufrufen. Sie benötigt genau ein Argument, die Umwelt und gibt ein nicht-gefrorenes Array von
genau drei Werte:
und die Körper.
Die detaillierte Spezifikation einer Rack-Anwendung finden Sie hier.
erfordern 'Rack'
class RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Meine Rack-App<h1>']
[status, headers, body]
end
end
Handler verbinden Webserver mit Rack. Rack enthält Handler für Thin, WEBrick, FastCGI, CGI, SCGI und LiteSpeed. Jeder Anwendungsserver, der Rack unterstützt, sollte
einen Handler zur Verfügung stellen, der die Verbindung herstellt (Puma hat einen eigenen Handler).Handler werden normalerweise durch den Aufruf MyHandler.run(myapp). Eine zweite Option Hash kann übergeben werden, um eine serverspezifische Konfiguration aufzunehmen.
Thin Application Server verwenden
Rack::Handler::Thin.run(app)
Die Standarddatei zum Hinzufügen der Konfiguration lautet config.ru und Sie können sie ausführen mit . Befehl in Ihrer Konsole.
Mit Rack können wir Middleware-Anwendungen erstellen (Anwendungen zwischen unserer Haupt-Webanwendung und dem Anwendungsserver). Diese Middleware-Anwendungen werden miteinander verkettet und nacheinander ausgeführt.
Rack Middleware muss alle Spezifikationen eines Rack-Anwendung und die folgenden Punkte erfüllen:
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end
Nachdem wir nun die Grundlagen kennen, sind wir bereit, unsere erste Rack-Anwendung mit Rack Middleware zu erstellen und sie mit Puma (Application Server) auszuführen.
Stellen Sie sicher, dass Sie die Gestell Edelstein und der puma gem installiert.
gem install rack
gem install puma
Zuerst müssen wir eine Datei namens config.ru und diese Datei verwendet die
die Rack::Builder DSL, um die Anwendung auszuführen und die Middleware hinzuzufügen.
Innerhalb der config.ru Datei fügen wir die einfache Rack-Anwendung hinzu, die wir in
die vorherigen Abschnitte.
# config.ru
Klasse RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Meine Rack-App<h1>']
[status, headers, body]
end
end
Hier werden wir eine kleine Änderung an unserer einfachen Middleware vornehmen, so dass sie nach der Ausführung die Serversoftware zu unserem HTML-Body hinzufügt.
# config.ru
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
body << env['SERVER_SOFTWARE']
[status, kopfzeilen, body]
end
end
Als letzten Schritt werden wir den Server starten und sehen, wie unsere Anwendung läuft. Unser config.ru Datei wird wie folgt aussehen:
# config.ru
Klasse RackApp
def call(env)
status = 200
headers = { 'Content-Type' => 'text/html' }
body = ['<h1>Meine Rack-App<h1>']
[status, headers, body]
end
end
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
body << env['SERVER_SOFTWARE']
[status, headers, body]
end
end
RackMiddleware verwenden
RackApp.new ausführen
In den letzten Zeilen spezifizieren wir die Middleware mit verwenden. und wir führen die Anwendung mit laufen.Wir sind bereit zur Ausführung . in unserer Konsole und sehen, dass der Server läuft. Wir können den Port, an dem unsere Anwendung läuft, überprüfen und sollten nach dem Zugriff auf die Anwendung etwas wie dieses sehen:

Manchmal ist es gut, zu den Grundlagen zurückzukehren und mehr über die Technologie zu erfahren, mit der wir arbeiten. Learning Rack gibt uns einen klaren Überblick über die Architektur und enthüllt die "Magie" hinter dem Ruby Web Frameworks.
