1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

whitespace

This commit is contained in:
Konstantin Haase 2011-04-18 13:19:43 +02:00
parent aabf7b79ef
commit 7c7560e08d

View file

@ -22,7 +22,6 @@ Die Seite kann nun unter http://localhost:4567 betrachtet werden.
Es wird empfohlen, den Thin-Server via <tt>gem install thin</tt> zu
installieren, den Sinatra dann, soweit vorhanden, automatisch verwendet.
== Routen
In Sinatra wird eine Route durch eine HTTP-Methode und ein URL-Muster
@ -91,7 +90,6 @@ Und auch hier können Block-Parameter genutzt werden:
"Hallo, #{c}!"
end
=== Bedingungen
An Routen können eine Vielzahl von Bedingungen angehängt werden, die erfüllt
@ -132,7 +130,6 @@ Es können auch andere Bedingungen relativ einfach hinzugefügt werden:
"Tut mir leid, verloren."
end
=== Rückgabewerte
Durch den Rückgabewert eines Routen-Blocks wird mindestens der Response-Body
@ -162,7 +159,6 @@ Damit lässt sich relativ einfach Streaming implementieren:
get('/') { Stream.new }
=== Eigene Routen-Muster
Wie oben schon beschrieben, ist Sinatra von Haus aus mit Unterstützung für
@ -205,7 +201,6 @@ Oder unter Verwendung eines negativen look ahead:
# ...
end
== Statische Dateien
Statische Dateien werden aus dem <tt>./public</tt>-Ordner ausgeliefert. Es ist
@ -218,7 +213,6 @@ Zu beachten ist, dass der Ordnername public nicht Teil der URL ist. Die Datei
<tt>./public/css/style.css</tt> ist unter
<tt>http://example.com/css/style.css</tt> zu finden.
== Views/Templates
Standardmäßig wird davon ausgegangen, dass sich Templates im
@ -232,7 +226,6 @@ mit Symbols auf Templates verweisen sollte, auch wenn sich ein Template in
einem Unterordner befindet (in diesen Fall <tt>:'subdir/template'</tt>).
Rendering-Methoden rendern jeden String direkt.
=== Haml-Templates
Das +haml+-Gem wird benötigt, um Haml-Templates rendern zu können:
@ -257,7 +250,6 @@ und individuell überschrieben werden.
haml :index, :format => :html4 # überschrieben
end
=== Erb-Templates
# erb muss eingebunden werden
@ -269,7 +261,6 @@ und individuell überschrieben werden.
Dieser Code rendert <tt>./views/index.erb</tt>.
=== Erubis
Das +erubis+-Gem wird benötigt, um Erubis-Templates rendern zu können:
@ -294,7 +285,6 @@ Es ist auch möglich, Erb durch Erubis zu ersetzen:
Dieser Code rendert ebenfalls <tt>./views/index.erb</tt>.
=== Builder-Templates
Das +builder+-Gem wird benötigt, um Builder-Templates rendern zu können:
@ -308,7 +298,6 @@ Das +builder+-Gem wird benötigt, um Builder-Templates rendern zu können:
Dieser Code rendert <tt>./views/index.builder</tt>.
=== Nokogiri-Templates
Das +nokogiri+-Gem wird benötigt, um Nokogiri-Templates rendern zu können:
@ -322,7 +311,6 @@ Das +nokogiri+-Gem wird benötigt, um Nokogiri-Templates rendern zu können:
Dieser Code rendert <tt>./views/index.nokogiri</tt>.
=== Sass-Templates
Das +haml+- oder +sass+-Gem wird benötigt, um Sass-Templates rendern zu können:
@ -347,7 +335,6 @@ und individuell überschrieben werden.
sass :stylesheet, :style => :expanded # überschrieben
end
=== SCSS-Templates
Das +haml+- oder +sass+-Gem wird benötigt, um SCSS-Templates rendern zu können:
@ -372,7 +359,6 @@ individuell überschrieben werden.
scss :stylesheet, :style => :expanded # überschrieben
end
=== Less-Templates
Das +less+-Gem wird benötigt, um Less-Templates rendern zu können:
@ -386,7 +372,6 @@ Das +less+-Gem wird benötigt, um Less-Templates rendern zu können:
Dieser Code rendert <tt>./views/stylesheet.less</tt>.
=== Liquid-Templates
Das +liquid+-Gem wird benötigt, um Liquid-Templates rendern zu können:
@ -405,7 +390,6 @@ aufgerufen werden können, ist es möglich, +locals+ zu übergeben:
liquid :index, :locals => { :key => 'value' }
=== Markdown-Templates
Das +rdiscount+-Gem wird benötigt, um Markdown-Templates rendern zu können:
@ -469,7 +453,6 @@ Ebenso ist es möglich, Markdown mit BlueCloth anstelle von RDiscount zu parsen:
Das sollte <tt>./views/index.md</tt> mit BlueCloth rendern.
=== Textile-Templates
Das +redcloth+-Gem wird benötigt, um Textile-Templates rendern zu können:
@ -518,7 +501,6 @@ Denk daran, dass solche Einstellungen auch global gesetzt werden können:
Das wird <tt>./views/index.textile</tt> (und jedes andere Markdown-Template)
mit <tt>./views/post.haml</tt> als Layout rendern.
=== RDoc-Templates
Das +rdoc+-Gem wird benötigt, um RDoc-Templates rendern zu können:
@ -566,7 +548,6 @@ Denk daran, dass solche Einstellungen auch global gesetzt werden können:
Das wird <tt>./views/index.rdoc</tt> (und jedes andere Markdown-Template) mit
<tt>./views/post.haml</tt> als Layout rendern.
=== Radius-Templates
Das +radius+-Gem wird benötigt, um Radius-Templates rendern zu können:
@ -585,7 +566,6 @@ aufgerufen werden können, es es möglich, +locals+ zu übergeben:
radius :index, :locals => { :key => 'value' }
=== Markaby-Templates
Das +markaby+-Gem wird benötigt, um Markaby-Templates rendern zu können:
@ -599,7 +579,6 @@ Das +markaby+-Gem wird benötigt, um Markaby-Templates rendern zu können:
Dieser Code rendert <tt>./views/index.mab</tt>.
=== Slim-Templates
Das +slim+-Gem wird benötigt, um Slim-Templates rendern zu können:
@ -613,7 +592,6 @@ Das +slim+-Gem wird benötigt, um Slim-Templates rendern zu können:
Dieser Code rendert <tt>./views/index.slim</tt>.
=== CoffeeScript-Templates
Das <tt>coffee-script</tt>-Gem und mindestens eine der folgenden Optionen
@ -637,7 +615,6 @@ Nun können CoffeeScript-Templates in der Applikation gerendert werden:
Dieser Code rendert <tt>./views/application.coffee</tt>.
=== Inline-Templates
get '/' do
@ -646,7 +623,6 @@ Dieser Code rendert <tt>./views/application.coffee</tt>.
Rendert den Inline-Template-String.
=== Auf Variablen in Templates zugreifen
Templates werden in demselben Kontext ausgeführt wie Routen. Instanzvariablen
@ -667,7 +643,6 @@ Oder durch einen expliziten Hash von lokalen Variablen:
Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
Templates eingesetzt.
=== Inline-Templates
Templates können auch am Ende der Datei definiert werden:
@ -692,7 +667,6 @@ Anmerkung: Inline-Templates, die in der Datei definiert sind, die <tt>require
in anderen Dateien aufzurufen, muss explizit <tt>enable :inline_templates</tt>
verwendet werden.
=== Benannte Templates
Templates können auch mit der Top-Level <tt>template</tt>-Methode definiert
@ -718,7 +692,6 @@ werden:
haml :index, :layout => !request.xhr?
end
=== Dateiendungen zuordnen
Um eine Dateiendung einer Template-Engine zuzuordnen, kann
@ -728,7 +701,6 @@ bewerkstelligen:
Tilt.register :tt, Tilt[:textile]
=== Eine eigene Template-Engine hinzufügen
Zu allererst muss die Engine bei Tilt registriert und danach eine
@ -748,7 +720,6 @@ Dieser Code rendert <tt>./views/application.mtt</tt>. Siehe
github.com/rtomayko/tilt[https://github.com/rtomayko/tilt], um mehr über Tilt
zu lernen.
== Filter
Before-Filter werden vor jedem Request in demselben Kontext, wie danach die
@ -796,7 +767,6 @@ werden:
# ...
end
== Helfer
Durch die Top-Level <tt>helpers</tt>-Methode werden sogenannte Helfer-Methoden
@ -812,7 +782,6 @@ definiert, die in Routen und Templates verwendet werden können:
bar(params[:name])
end
=== Sessions verwenden
Sessions werden verwendet, um Zustände zwischen den Requests zu speichern.
Sind sie aktiviert, kann ein Session-Hash je Benutzer-Session verwendet werden.
@ -856,7 +825,6 @@ Einstellungen ablegen.
set :sessions, :domain => 'foo.com'
== Anhalten
Zum sofortigen Stoppen eines Request in einem Filter oder einer Route:
@ -883,7 +851,6 @@ Natürlich ist es auch möglich, ein Template mit +halt+ zu verwenden:
halt erb(:error)
== Weiterspringen
Eine Route kann mittels <tt>pass</tt> zu der nächsten passenden Route springen:
@ -901,7 +868,6 @@ Der Block wird sofort verlassen und es wird nach der nächsten treffenden Route
gesucht. Ein 404-Fehler wird zurückgegeben, wenn kein treffendes Routen-Muster
gefunden wird.
=== Eine andere Route ansteuern
Manchmal entspricht +pass+ nicht den Anforderungen, wenn das Ergebnis einer
@ -926,7 +892,6 @@ Kopie der Instanz erzeugt werden soll, kann <tt>call!</tt> anstelle von
Die Rack-Spezifikationen enthalten weitere Informationen zu +call+.
=== Body, Status-Code und Header setzen
Es ist möglich und empfohlen, den Status-Code sowie den Response-Body mit einem
@ -974,7 +939,6 @@ Der Logger übernimmt dabei automatisch alle im Rack-Handler eingestellten Log-
Vorgaben. Ist Loggen ausgeschaltet, gibt die Methode ein Leerobjekt zurück.
In den Routen und Filtern muss man sich also nicht weiter darum kümmern.
Beachte, dass das Loggen standardmäßig nur für <tt>Sinatra::Application</tt>
voreingestellt ist. Wird über <tt>Sinatra::Base</tt> vererbt, muss es erst
aktiviert werden:
@ -985,7 +949,6 @@ aktiviert werden:
end
end
== Mime-Types
Wenn <tt>send_file</tt> oder statische Dateien verwendet werden, kann es
@ -1001,7 +964,6 @@ Es kann aber auch der +content_type+-Helfer verwendet werden:
"foo foo foo"
end
=== URLs generieren
Zum Generieren von URLs sollte die +url+-Helfer-Methode genutzen werden, so
@ -1014,7 +976,6 @@ Soweit vorhanden, wird Rücksicht auf Proxys und Rack-Router genommen.
Diese Methode ist ebenso über das Alias +to+ zu erreichen (siehe Beispiel
unten).
=== Browser-Umleitung
Eine Browser-Umleitung kann mithilfe der +redirect+-Helfer-Methode erreicht
@ -1059,7 +1020,6 @@ oder eine Session verwendet werden:
session[:secret]
end
=== Dateien versenden
Zum Versenden von Dateien kann die <tt>send_file</tt>-Helfer-Methode verwendet
@ -1095,7 +1055,6 @@ Ruby-Prozess auch andere Möglichkeiten genutzt. Bei Verwendung der
<tt>send_file</tt>-Helfer-Methode kümmert sich Sinatra selbstständig um die
Range-Requests.
== Das Request-Objekt
Auf das +request+-Objekt der eigehenden Anfrage kann vom Anfrage-Scope aus
@ -1149,7 +1108,6 @@ Der <tt>request.body</tt> ist ein IO- oder StringIO-Objekt:
"Hallo #{daten['name']}!"
end
=== Anhänge
Damit der Browser erkennt, dass ein Response gespeichert und nicht im Browser
@ -1167,7 +1125,6 @@ Ebenso kann eine Dateiname als Parameter hinzugefügt werden:
"Speichern!"
end
=== Nachschlagen von Template-Dateien
Die <tt>find_template</tt>-Helfer-Methode wird genutzt, um Template-Dateien zum
@ -1213,7 +1170,6 @@ Template-Pfade samt Inhalt gecached, solange nicht im Entwicklungsmodus
gearbeitet wird. Das sollte im Hinterkopf behalten werden, wenn irgendwelche
verrückten Methoden zusammenbastelt werden.
== Konfiguration
Wird einmal beim Starten in jedweder Umgebung ausgeführt:
@ -1261,7 +1217,6 @@ Diese Einstellungen sind über +settings+ erreichbar:
...
end
=== Mögliche Einstellungen
[absolute_redirects] Wenn ausgeschaltet, wird Sinatra relative Redirects
@ -1357,14 +1312,12 @@ Diese Einstellungen sind über +settings+ erreichbar:
[views] Verzeichnis der Views.
== Fehlerbehandlung
Error-Handler laufen in demselben Kontext wie Routen und Filter, was bedeutet,
dass alle Goodies wie <tt>haml</tt>, <tt>erb</tt>, <tt>halt</tt>, etc.
verwendet werden können.
=== Nicht gefunden
Wenn eine <tt>Sinatra::NotFound</tt>-Exception geworfen wird oder der
@ -1374,7 +1327,6 @@ Statuscode 404 ist, wird der <tt>not_found</tt>-Handler ausgeführt:
'Seite kann nirgendwo gefunden werden.'
end
=== Fehler
Der +error+-Handler wird immer ausgeführt, wenn eine Exception in einem
@ -1420,7 +1372,6 @@ Oder ein Status-Code-Bereich:
Sinatra setzt verschiedene <tt>not_found</tt>- und <tt>error</tt>-Handler in
der Development-Umgebung.
== Rack-Middleware
Sinatra baut auf Rack[http://rack.rubyforge.org/], einem minimalistischen
@ -1456,7 +1407,6 @@ URL-Routing, Authentifizierung und Session-Verarbeitung. Sinatra verwendet
viele von diesen Komponenten automatisch, abhängig von der Konfiguration. So
muss +use+ häufig nicht explizit verwendet werden.
== Testen
Sinatra-Tests können mit jedem auf Rack aufbauendem Test-Framework geschrieben
@ -1492,7 +1442,6 @@ werden. {Rack::Test}[http://gitrdoc.com/brynary/rack-test] wird empfohlen:
Anmerkung: Das eingebaute Sinatra::Test-Modul und die
Sinatra::TestHarness-Klasse werden seit Version 0.9.2 nicht mehr unterstützt.
== Sinatra::Base - Middleware, Bibliotheken und modulare Anwendungen
Das Definieren einer Top-Level-Anwendung funktioniert gut für
@ -1538,7 +1487,6 @@ per Standard deaktiviert. Das betrifft auch den eingebauten Server. Siehe
{Optionen und Konfiguration}[http://sinatra.github.com/configuration.html] für
Details über mögliche Optionen.
=== Modularer vs. klassischer Stil
Entgegen häufiger Meinungen gibt es nichts gegen den klassischen Stil
@ -1568,7 +1516,6 @@ Unterschiede beachtet werden:
method_override true false
inline_templates true false
=== Eine modulare Applikation bereitstellen
Es gibt zwei übliche Wege, eine modulare Anwendung zu starten. Zum einen über
@ -1599,7 +1546,6 @@ Starte:
rackup -p 4567
=== Eine klassische Anwendung mit einer config.ru verwenden
Schreibe eine Anwendungsdatei:
@ -1616,7 +1562,6 @@ sowie eine dazugehörige <tt>config.ru</tt>-Datei:
require 'app'
run Sinatra::Application
=== Wann sollte eine config.ru-Datei verwendet werden?
Anzeichen dafür, dass eine <tt>config.ru</tt>-Datei gebraucht wird:
@ -1631,7 +1576,6 @@ eine Anwendung im modularen Stil betrieben werden soll. Ebenso wird keine
Anwendung mit modularem Stil benötigt, um eine <tt>config.ru</tt>-Datei zu
verwenden.</b>
=== Sinatra als Middleware nutzen
Es ist nicht nur möglich, andere Rack-Middleware mit Sinatra zu nutzen, es kann
@ -1679,7 +1623,6 @@ ohne dass sie einer Konstanten zugeordnet werden. Dies lässt sich mit
my_app = Sinatra.new { get('/') { "hallo" } }
my_app.run!
Die Applikation kann mit Hilfe eines optionalen Parameters erstellt werden:
require 'sinatra/base'
@ -1710,13 +1653,11 @@ Ebenso lassen sich damit hervorragend Sinatra-Middlewares erstellen:
run RailsProject::Application
== Geltungsbereich und Bindung
Der Geltungsbereich (Scope) legt fest, welche Methoden und Variablen zur
Verfügung stehen.
=== Anwendungs- oder Klassen-Scope
Jede Sinatra-Anwendung entspricht einer Sinatra::Base-Subklasse. Falls die Top-
@ -1752,7 +1693,6 @@ Auf das Scope-Objekt (die Klasse) kann wie folgt zugegriffen werden:
{ |c| ... }</tt>).
* +settings+ aus den anderen Scopes heraus.
=== Anfrage- oder Instanz-Scope
Für jede eingehende Anfrage wird eine neue Instanz der Anwendungs-Klasse
@ -1783,7 +1723,6 @@ Im Anfrage-Scope befindet man sich:
* In Helfer-Methoden
* In Templates
=== Delegation-Scope
Vom Delegation-Scope aus werden Methoden einfach an den Klassen-Scope
@ -1805,7 +1744,6 @@ Schau am besten im Code nach: Hier ist
definiert und wird in den
{globalen Namespace eingebunden}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25].
== Kommandozeile
Sinatra-Anwendungen können direkt von der Kommandozeile aus gestartet werden:
@ -1821,7 +1759,6 @@ Die Optionen sind:
-s # Rack-Server/Handler setzen (Standard ist thin)
-x # Mutex-Lock einschalten (Standard ist off)
== Systemanforderungen
Die folgenden Versionen werden offiziell unterstützt:
@ -1871,15 +1808,14 @@ Zeit für nichts garantiert werden. Es kann aber erwartet werden, dass Ruby
Sinatra sollte auf jedem Betriebssystem laufen, dass den gewählten Ruby-
Interpreter unterstützt.
== Der neueste Stand (The Bleeding Edge)
Um auf dem neusten Stand zu bleiben, kann der Master-Branch verwendet werden.
Er sollte recht stabil sein. Ebenso gibt es von Zeit zu Zeit prerelease Gems,
die so installiert werden:
gem install sinatra --pre
=== Mit Bundler
Wenn die Applikation mit der neuesten Version von Sinatra und
@ -1934,7 +1870,6 @@ Um Sinatra-Code von Zeit zu Zeit zu aktualisieren:
cd myproject/sinatra
git pull
=== Gem erstellen
Aus der eigenen lokalen Kopie kann nun auch ein globales Gem gebaut werden:
@ -1949,13 +1884,11 @@ folgendermaßen lauten:
sudo rake install
== Versions-Verfahren
Sinatra folgt dem sogenannten {Semantic Versioning}[http://semver.org/], d.h.
SemVer und SemVerTag.
== Mehr
* {Projekt-Website}[http://sinatra.github.com/] - Ergänzende Dokumentation,
@ -1967,7 +1900,7 @@ SemVer und SemVerTag.
* {Mailing-Liste}[http://groups.google.com/group/sinatrarb]
* {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] auf http://freenode.net
* API Dokumentation für die {aktuelle Version}[http://rubydoc.info/gems/sinatra]
oder für {HEAD}[http://rubydoc.info/github/sinatra/sinatra] auf
* API Dokumentation für die {aktuelle Version}[http://rubydoc.info/gems/sinatra]
oder für {HEAD}[http://rubydoc.info/github/sinatra/sinatra] auf
http://rubydoc.info