window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Die Rolle von Rack im Ruby-Ökosystem - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2022-08-25
Software-Entwicklung

Die Rolle von Rack im Ruby-Ökosystem

Nicolas Nisoria

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 Ruby-Web-Frameworks ist es üblich, Dinge für selbstverständlich zu halten. Wir wissen, dass das Framework die HTTP-Anfragen bearbeiten und die Middleware-Logik für uns ausführen wird. Je neugieriger wir werden, desto mehr fragen wir uns, was sich hinter den Kulissen verbirgt, und da fangen wir an, von Rack zu hören.

Was ist Rack?

Die Projekt wird als "eine modulare Ruby-Webserver-Schnittstelle" beschrieben. Rack ist die Schnittstelle, mit der wir Webanwendungen erstellen können, die die API für Webserver, Web-Frameworks und Middleware vereinen.

Rack-Rubin-Schema

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.

Rack-Anwendung

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:

  • Die Status,
  • die Kopfzeilen,
  • 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

Gestell::Handler

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). Ein zweiter optionaler Hash kann übergeben werden, um die 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.

Rack-Middleware

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:

  • Es muss eine Klasse sein,
  • haben einen Initialisierer, der nur einen Parameter erhält (die Hauptanwendung),
  • und rufen die nächste Middleware oder die Anwendung auf.
class RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
end

Rack in der Praxis

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.

Installieren Sie die Abhängigkeiten

Stellen Sie sicher, dass Sie die Gestell Edelstein und der puma gem installiert.

gem install rack
gem install puma

Erstellen Sie die Konfigurationsdatei

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.

Hinzufügen der Rack-Anwendung

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' =&gt; 'text/html' }
    body = ['<h1>Meine Rack-App<h1>']

    [status, headers, body]
  end
end

Hinzufügen der Rack-Middleware

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

Starten Sie den Anwendungsserver

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' =&gt; '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 <&lt; env[&#039;SERVER_SOFTWARE&#039;]

    [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:

rack server text

Schlussfolgerungen

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.

Kooperationsbanner

Ähnliche Artikel

Software-Entwicklung

GraphQL Ruby. Wie sieht es mit der Leistung aus?

GraphQL hat, wie jede Technologie, seine Probleme, von denen einige direkt aus der Architektur resultieren und einige identisch mit denen sind, die wir in jeder anderen Anwendung sehen. Allerdings sind die Lösungen...

Der Codest
Tomasz Szkaradek Architekt für Entwicklung
Software-Entwicklung

Eine einfache Ruby-Anwendung von Grund auf mit Active Record

MVC ist ein Entwurfsmuster, das die Verantwortlichkeiten einer Anwendung aufteilt, um sie leichter handhabbar zu machen. Rails folgt diesem Entwurfsmuster per Konvention.

Der Codest
Damian Watroba Software Engineer
E-commerce

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...

Nicolas Nisoria

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

    de_DEGerman
    en_USEnglish sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek de_DEGerman