Ruby-Webanwendungen - CGI-Programmierung
Ruby ist eine Allzwecksprache. Es kann überhaupt nicht als Web-Sprache bezeichnet werden . Trotzdem gehören Webanwendungen und Webtools im Allgemeinen zu den häufigsten Anwendungen von Ruby.
Sie können nicht nur Ihren eigenen SMTP-Server, FTP-Daemon oder Webserver in Ruby schreiben, sondern Ruby auch für üblichere Aufgaben wie die CGI-Programmierung oder als Ersatz für PHP verwenden.
Bitte verbringen Sie einige Minuten mit dem CGI-Programmier- Tutorial, um weitere Informationen zur CGI-Programmierung zu erhalten.
Schreiben von CGI-Skripten
Das grundlegendste Ruby CGI-Skript sieht folgendermaßen aus:
#!/usr/bin/ruby
puts "HTTP/1.0 200 OK"
puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"
Wenn Sie dieses Skript test.cgi aufrufen und es mit den richtigen Berechtigungen auf einen Unix-basierten Webhosting-Anbieter hochladen , können Sie es als CGI-Skript verwenden.
Zum Beispiel, wenn Sie die Website haben https://www.example.com/Bei einem Linux-Webhosting-Anbieter gehostet, laden Sie test.cgi in das Hauptverzeichnis hoch und erteilen ihm Ausführungsberechtigungen. Anschließend besuchen Siehttps://www.example.com/test.cgi sollte eine HTML-Seite zurückgeben, die sagt This is a test.
Wenn test.cgi von einem Webbrowser angefordert wird, sucht der Webserver auf der Website nach test.cgi und führt es dann mit dem Ruby-Interpreter aus. Das Ruby-Skript gibt einen grundlegenden HTTP-Header und anschließend ein grundlegendes HTML-Dokument zurück.
Verwenden von cgi.rb
Ruby kommt mit einer speziellen Bibliothek namens cgi Dies ermöglicht komplexere Interaktionen als mit dem vorhergehenden CGI-Skript.
Lassen Sie uns ein einfaches CGI-Skript erstellen, das cgi verwendet -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>This is a test</body></html>"
Hier haben Sie ein CGI-Objekt erstellt und damit die Kopfzeile für Sie gedruckt.
Formularverarbeitung
Mit der Klassen-CGI können Sie auf zwei Arten auf HTML-Abfrageparameter zugreifen. Angenommen, wir erhalten eine URL von /cgi-bin/test.cgi?FirstName = Zara & LastName = Ali.
Sie können mit CGI # [] direkt wie folgt auf die Parameter Vorname und Nachname zugreifen :
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['FirstName'] # => ["Zara"]
cgi['LastName'] # => ["Ali"]
Es gibt eine andere Möglichkeit, auf diese Formularvariablen zuzugreifen. Dieser Code gibt Ihnen einen Hash aller Schlüssel und Werte -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}
h['FirstName'] # => ["Zara"]
h['LastName'] # => ["Ali"]
Es folgt der Code zum Abrufen aller Schlüssel -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi.keys # => ["FirstName", "LastName"]
Wenn ein Formular mehrere Felder mit demselben Namen enthält, werden die entsprechenden Werte als Array an das Skript zurückgegeben. Der Accessor [] gibt nur den ersten von diesen zurück. Indizieren Sie das Ergebnis der params-Methode, um alle abzurufen.
In diesem Beispiel wird angenommen, dass das Formular drei Felder mit dem Namen "Name" enthält und wir drei Namen "Zara", "Huma" und "Nuha" eingegeben haben.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['name'] # => "Zara"
cgi.params['name'] # => ["Zara", "Huma", "Nuha"]
cgi.keys # => ["name"]
cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}
Note- Ruby kümmert sich automatisch um die GET- und POST-Methoden. Für diese beiden unterschiedlichen Methoden gibt es keine getrennte Behandlung.
Ein zugehöriges, aber einfaches Formular, das die richtigen Daten senden könnte, hätte den HTML-Code wie folgt:
<html>
<body>
<form method = "POST" action = "http://www.example.com/test.cgi">
First Name :<input type = "text" name = "FirstName" value = "" />
<br />
Last Name :<input type = "text" name = "LastName" value = "" />
<input type = "submit" value = "Submit Data" />
</form>
</body>
</html>
Formulare und HTML erstellen
CGI enthält eine Vielzahl von Methoden zum Erstellen von HTML. Sie finden eine Methode pro Tag. Um diese Methoden zu aktivieren, müssen Sie ein CGI-Objekt erstellen, indem Sie CGI.new aufrufen.
Um das Verschachteln von Tags zu vereinfachen, verwenden diese Methoden ihren Inhalt als Codeblöcke. Die Codeblöcke sollten einen String zurückgeben , der als Inhalt für das Tag verwendet wird. Zum Beispiel -
#!/usr/bin/ruby
require "cgi"
cgi = CGI.new("html4")
cgi.out {
cgi.html {
cgi.head { "\n"+cgi.title{"This Is a Test"} } +
cgi.body { "\n"+
cgi.form {"\n"+
cgi.hr +
cgi.h1 { "A Form: " } + "\n"+
cgi.textarea("get_text") +"\n"+
cgi.br +
cgi.submit
}
}
}
}
NOTE- Die Formularmethode der CGI-Klasse kann einen Methodenparameter akzeptieren, der die HTTP-Methode (GET, POST usw.) für die Formularübermittlung festlegt. Die in diesem Beispiel verwendete Standardeinstellung ist POST.
Dies führt zu folgendem Ergebnis:
Content-Type: text/html
Content-Length: 302
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">
<HTML>
<HEAD>
<TITLE>This Is a Test</TITLE>
</HEAD>
<BODY>
<FORM METHOD = "post" ENCTYPE = "application/x-www-form-urlencoded">
<HR>
<H1>A Form: </H1>
<TEXTAREA COLS = "70" NAME = "get_text" ROWS = "10"></TEXTAREA>
<BR>
<INPUT TYPE = "submit">
</FORM>
</BODY>
</HTML>
Strings zitieren
Wenn Sie mit URLs und HTML-Code arbeiten, müssen Sie darauf achten, bestimmte Zeichen in Anführungszeichen zu setzen. Zum Beispiel hat ein Schrägstrich (/) in einer URL eine besondere Bedeutung, also muss es seinescaped wenn es nicht Teil des Pfadnamens ist.
Beispielsweise wird jedes / im Abfrageteil der URL in die Zeichenfolge% 2F übersetzt und muss zurück in ein / übersetzt werden, damit Sie es verwenden können. Leerzeichen und kaufmännisches Und sind ebenfalls Sonderzeichen. Um dies zu handhaben, stellt CGI die Routinen bereitCGI.escape und CGI.unescape.
#!/usr/bin/ruby
require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
Dies führt zu folgendem Ergebnis:
Zara+Ali%2FA Sweet+%26+Sour+Girl")
#!/usr/bin/ruby
require 'cgi'
puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
Dies führt zu folgendem Ergebnis:
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
Nützliche Methoden in der CGI-Klasse
Hier ist die Liste der Methoden, die sich auf die CGI-Klasse beziehen -
Die Ruby CGI - Methoden zur Standard CGI Bibliothek.
Cookies und Sitzungen
Wir haben diese beiden Konzepte in verschiedenen Abschnitten erläutert. Bitte folgen Sie den Abschnitten -
Die Ruby CGI Cookies - Umgang mit CGI Cookies.
Die Ruby-CGI-Sitzungen - Verwalten von CGI-Sitzungen.
Webhosting-Server
Sie können das folgende Thema im Internet überprüfen, um Ihre Website auf einem Unix-basierten Server zu hosten:
Unix-basiertes Webhosting