Erstellen einer Web-App in Ruby ohne Framework [geschlossen]

7

Ich möchte eine Web-App in Ruby erstellen, aber ich weiß nicht, ob es möglich ist, ohne ein Framework zu verwenden. Ich weiß nicht, warum die meisten Ruby-Entwickler ein Framework wie Rails oder Sinatra verwenden.

Wie richte ich eine Ruby-Webanwendung ein, die nicht auf einem vorhandenen Framework basiert?

    
Sing Sandibar 08.04.2013, 09:42
quelle

1 Antwort

78
  

Ist es möglich, eine Web-App in Ruby zu erstellen, ohne ein Framework zu verwenden?

Zu lang; Habe nicht gelesen

Ja, das ist definitiv möglich. Die meisten Ruby-Frameworks sind mit reinem Ruby über anderen Middleware-Bibliotheken wie Webserver-Schnittstellen aufgebaut.

Ruby und das Web

Ruby ist eine allgemeine Sprache; Daher ist es nicht speziell für Web-Entwicklung konzipiert. PHP ist beispielsweise eine Sprache, die zum Erstellen von Webanwendungen geschrieben wurde. In Ruby werden brauchen einige Bibliotheken, um HTTP-Header und webspezifische Elemente richtig zu behandeln.

In Python zum Beispiel (eine andere generische Programmiersprache) haben wir eine Standardspezifikation für Webserver-Schnittstellen namens WSGI (Webserver-Gateway-Schnittstelle). Jeder Server, der die WSGI-Spezifikation implementiert, wird WSGI-kompatibel genannt. Jeder WSGI-kompatible Server kann dasselbe WSGI-Python-Skript auf dieselbe Weise ausführen.

Warum erzähle ich Ihnen das, wenn ich über Ruby spreche? Weil Ruby ein sehr ähnliches Konzept wie WSGI hat, mit der möglichen Ausnahme, dass es nicht ist ein Standard. Sein Name ist Rack , und es bietet eine Schnittstelle, um mit allgemeinen Low-Level-HTTP / Server-Sachen umzugehen, die Sie selbst nicht behandeln wollen dass wir Ruby verwenden können als ob wir PHP benutzen würden.

Ruby, Rack und Apache

Nehmen wir ein Beispiel aus dem wirklichen Leben: Apache. Apache ist einer der am häufigsten verwendeten Webserver. Wie funktioniert PHP mit Apache? Mit mod_php . Wie funktionieren Python-WSGI-kompatible Anwendungen mit Apache? Mit mod_wsgi . Wie funktionieren Ruby Rack-kompatible Anwendungen mit Apache? Mit mod_rack . Kannst du das Muster hier sehen? Der Webserver muss wissen, wie Sie Ihre Anwendung ordnungsgemäß mit dem Anfrage / Antwort-Webkontext verknüpfen können.

Rack-Beispiel

Wenn wir uns in diesem abstrakten Vortrag nicht weiter beschäftigen, konzentrieren wir uns auf ein Beispiel:

%Vor%

Dieses Beispiel wird von der Rack-Website bereitgestellt und erläutert, wie ein Rack-kompatibles Skript ausgeführt wird:

  • Sie installieren rack auf Ihrem Webserver (Sie finden viele Tutorials zu Google, die für Ihren Webserver spezifisch sind)
  • Sie erstellen eine config.ru -Datei im Stammordner ( .ru ist meist Ruby)
  • Sie fügen dieses Skript
  • ein
  • Sie führen es mit der Methode run
  • aus

Et voilà , wir haben eine Webserver-Schnittstelle. Der env -Hash enthält die Umgebungsvariable aus der aktuellen Anfrage und das Array, das Sie zurückgeben, enthält 3 Komponenten:

  1. Der Antwortstatus 200 steht für "Alles ist in Ordnung". 404 steht für "Nicht gefunden". Und so weiter.
  2. Der HTTP-Header . Diese beschreiben den Antworttext. Seine Länge. Sein Inhalt. Und so weiter.
  3. Der Antworttext . Dies enthält die tatsächliche Ausgabe Ihrer Anwendung. HTML, JSON, XML, HXML, einfacher Text ... was auch immer.

In PHP zum Beispiel wird das alles automatisch gemacht. Wenn Sie echo "Hello"; ausführen, werden der Antwortstatus und die Header vom PHP-Interpreter für Sie generiert.

Eine Anmerkung zu Alternativen

Sie können in diesem Feld alles auswählen, was Sie wollen, aber die meisten der unten aufgelisteten Technologien sind entweder veraltet oder ihre Verwendung wird von der Community stark abgemahnt.

In den ersten Jahren des Web gab es eine gemeinsame Schnittstelle, die zum Ausführen von Perl, Python, Ruby, C Scripts auf der Serverseite verwendet wurde: CGI oder Common Gateway Interface. Dies ist eine Schnittstelle, die von so ziemlich jeder Programmiersprache verwendet werden kann, aber im Allgemeinen wird sie als langsam angesehen.

Einige dachten daran, dieses Interface wiederzubeleben, indem es es schneller macht. Und raten Sie mal, was, FCGI oder FastCGI entstand. Diese Technologie wird häufiger verwendet, als Sie vielleicht denken. Einige PHP-Skripte werden manchmal in FCGI-Skripts konvertiert, damit sie schneller ausgeführt werden. Ich möchte zu diesem Thema nicht weiter gehen, da es viele andere Referenzen gibt.

Und schließlich könnten Sie Ihren eigenen Webserver erstellen. Sie sind nicht gezwungen, den Web-Server mit Ruby zu erstellen, um Ruby zu verwenden. Theoretisch ist ein Webserver so einfach wie:

  1. Hören Sie auf einen Port (meistens 80), bis eine Anfrage eingeht
  2. Behandle die Anfrage
  3. Ausgabe der Antwort
  4. gehe zu 1

In der realen Umgebung möchten Sie Ihren Webserver nicht selbst für Produktions-Websites implementieren. Also entmutige ich das definitiv.

  

Und wenn ja, warum werden von den meisten Ruby-Web-Entwicklern Frameworks ausgewählt?

Die Profis

Frameworks dienen dazu, Ihre Entwicklung schnell voranzutreiben.Wenn Sie Deadlines haben, möchten Sie sich nicht mit Low-Level-Kram beschäftigen und Sie würden einen framework build -blog -Befehl lieben, der so viele langweilige Dinge für Sie verwaltet, wie Sie können und sich auf das echte Anwendungsdesign konzentrieren können.

>

Frameworks sind normalerweise Open Source und haben große Communities, was dazu beiträgt, das Framework schnell zu verbessern. Sie können leicht verstehen, dass ein Programmfehler, der von 10.000 Augenpaaren erkannt wird, 10.000 mal schneller ist als Code, den Sie selbst schreiben.

Die Nachteile

Einige Frameworks sind möglicherweise zu groß für Ihre Bedürfnisse und andere sind möglicherweise zu klein. Im Ruby-Kontext gibt es die riesigen Rails und ihren kleinen Bruder Sinatra. Einer ist riesig und der andere ist sehr klein und geht wirklich aus dem Weg. Manchmal möchten Sie etwas dazwischen.

Frameworks sind normalerweise sehr generisch. Das bedeutet, dass Sie Dinge konfigurieren müssen, die für Ihren Kontext offensichtlich sind.

Frameworks enthalten mehr Code als Sie benötigen. Dies ist eine Tatsache, die Sie selbst ableiten können. Dies bedeutet in der Regel mehr Komplexität und direkt mehr Bugs (obwohl dies durch die riesige Gemeinschaft um sie herum kompensiert wird).

    
Shoe 08.04.2013, 13:15
quelle

Tags und Links