Zum einen gibt es die nicht empfehlenswerte Methode, HTML-Seiten per Hand zu erstellen. Die Gefahr dabei ist, dass bei einer rein visuellen Kontrolle in einem Browser Fehler im HTML-Code überspielt werden, die sich auf einem anderen System drastisch auswirken können. Typisches Beispiel ist die Behandlung von fehlerhaften Tabellen im Netscape Navigator und dem Internet Explorer von Microsoft.
puts "Content-type: text/html;\n\n" puts "<html><body>" puts "Wenn Diamanten die besten Freunde" + " der Frauen sind,<br>ist Ruby der beste" + " Freund des Programmierers."
Besser einsetzbar ist das CGI-Modul:
require "cgi"
cgi = CGI.new("html3")
cgi.out {
cgi.html {
cgi.head { "" } +
cgi.body{
"Wenn Diamanten die besten Freunde" +
" der Frauen sind, ist Ruby der beste" +
" Freund des Programmierers."
}}}
liefert (ohne Zeilenumbrüche im HTML-Teil)
Content-Type: text/html Content-Length: 189 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML><HEAD></HEAD><BODY> Wenn Diamanten die besten Freunde der Frauen sind, ist Ruby der beste Freund des Programmierers. </BODY></HTML>
Mit CGI.pretty:
require "cgi"
cgi = CGI.new("html3")
cgi.out {
CGI.pretty (
cgi.html {
cgi.head { "" } +
cgi.body{
"Wenn Diamanten die besten Freunde" +
" der Frauen sind, ist Ruby der beste" +
" Freund des Programmierers."
}})}
Aus Platzgründen wurde der unten stehende Output editiert: Aus zwei Leerzeichen wurde eines gemacht, die Doctype-Zeile in zwei getrennt sowie der Bodyinhalt in 3 Zeilen gebrochen.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> </HEAD> <BODY> Wenn Diamanten die besten Freunde der Frauen sind, ist Ruby der beste Freund des Programmierers. </BODY> </HTML>
Ruby erzeugt neben den Informationen des HTTP-Headers
auch die SGML-gerechte Versionsangabe für den HTML-Text.
Webbrowser (wie Netscape 6) verwenden diese Information, um
ihr Verhalten an die entsprechenden Besonderheiten der jeweiligen
Sprachversion anzupassen. Die Argumente "html4",
"html4Tr" und "html4Fr" erzeugen HTML 4-konforme
Dokumente, die sich nach der Strict-, Transitional- oder
Frameset-Beschreibung richten.