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

Merge pull request #276 from burningTyger/readme_de

updated the German docs
This commit is contained in:
Konstantin Haase 2011-05-19 12:00:06 -07:00
commit 82730c5f14

View file

@ -44,7 +44,7 @@ definiert. Jeder dieser Routen wird ein Ruby-Block zugeordnet:
end
options '/' do
.. lege etwas fest ..
.. zeige, was wir können ..
end
Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden.
@ -78,6 +78,12 @@ Routen-Muster können auch mit Splat- oder Wildcard-Parametern über das
params[:splat] # => ["pfad/zu/datei", "xml"]
end
Oder mit Block-Parametern:
get '/download/*.*' do |pfad, endung|
[pfad, endung] # => ["Pfad/zu/Datei", "xml"]
end
Routen mit regulären Ausdrücken sind auch möglich:
get %r{/hallo/([\w]+)} do
@ -313,7 +319,7 @@ 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:
Das +sass+-Gem wird benötigt, um Sass-Templates rendern zu können:
# sass muss eingebunden werden
require 'sass'
@ -337,7 +343,7 @@ und individuell überschrieben werden.
=== SCSS-Templates
Das +haml+- oder +sass+-Gem wird benötigt, um SCSS-Templates rendern zu können:
Das +sass+-Gem wird benötigt, um SCSS-Templates rendern zu können:
# sass muss eingebunden werden
require 'sass'
@ -650,7 +656,7 @@ Oder durch einen expliziten Hash von lokalen Variablen:
get '/:id' do
foo = Foo.find(params[:id])
haml '%h1= foo.name', :locals => { :foo => foo }
haml '%h1= bar.name', :locals => { :bar => foo }
end
Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
@ -702,7 +708,7 @@ verwendet. Durch <tt>:layout => false</tt> kann das Ausführen verhindert
werden:
get '/' do
haml :index, :layout => !request.xhr?
haml :index, :layout => request.xhr?
end
=== Dateiendungen zuordnen
@ -968,7 +974,9 @@ Wenn <tt>send_file</tt> oder statische Dateien verwendet werden, kann es
vorkommen, dass Sinatra den Mime-Typ nicht kennt. Registriert wird dieser mit
+mime_type+ per Dateiendung:
configure do
mime_type :foo, 'text/foo'
end
Es kann aber auch der +content_type+-Helfer verwendet werden:
@ -1478,10 +1486,17 @@ 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.
Hilfreiche Middleware gibt es z.B. hier:
{rack}[https://github.com/rack/rack/tree/master/lib/rack],
{rack-contrib}[https://github.com/rack/rack-contrib#readme],
mit {CodeRack}[http://coderack.org/] oder im
{Rack wiki}[https://github.com/rack/rack/wiki/List-of-Middleware].
== Testen
Sinatra-Tests können mit jedem auf Rack aufbauendem Test-Framework geschrieben
werden. {Rack::Test}[http://gitrdoc.com/brynary/rack-test] wird empfohlen:
werden. {Rack::Test}[http://rdoc.info/github/brynary/rack-test/master/frames]
wird empfohlen:
require 'my_sinatra_app'
require 'test/unit'
@ -1510,9 +1525,6 @@ werden. {Rack::Test}[http://gitrdoc.com/brynary/rack-test] wird empfohlen:
end
end
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
@ -1521,9 +1533,9 @@ Middleware, Rails Metal, einfache Bibliotheken mit Server-Komponenten oder auch
Sinatra-Erweiterungen geschrieben werden sollen.
Die Top-Level-DSL belastet den Objekt-Namespace und setzt einen
Mikro-Anwendungsstil voraus (eine einzelne Anwendungsdatei, ./public und
./views Ordner, Logging, Exception-Detail-Seite, usw.). Genau hier kommt
Sinatra::Base ins Spiel:
Mikro-Anwendungsstil voraus (eine einzelne Anwendungsdatei, <tt>./public</tt>
und <tt>./views</tt> Ordner, Logging, Exception-Detail-Seite, usw.). Genau
hier kommt <tt>Sinatra::Base</tt> ins Spiel:
require 'sinatra/base'
@ -1543,15 +1555,15 @@ Server-Komponente einer Bibliothek:
MyApp.run! :host => 'localhost', :port => 9090
Die Methoden der Sinatra::Base-Subklasse sind genau dieselben wie die der
Top-Level-DSL. Die meisten Top-Level-Anwendungen können mit nur zwei
Veränderungen zu Sinatra::Base-Komponenten konvertiert werden:
Die Methoden der <tt>Sinatra::Base</tt>-Subklasse sind genau dieselben wie die
der Top-Level-DSL. Die meisten Top-Level-Anwendungen können mit nur zwei
Veränderungen zu <tt>Sinatra::Base</tt> konvertiert werden:
* Die Datei sollte <tt>require 'sinatra/base'</tt> anstelle von
<tt>require 'sinatra/base'</tt> aufrufen, ansonsten werden alle von
Sinatras DSL-Methoden in den Top-Level-Namespace importiert.
* Alle Routen, Error-Handler, Filter und Optionen der Applikation müssen in
einer Subklasse von Sinatra::Base definiert werden.
einer Subklasse von <tt>Sinatra::Base</tt> definiert werden.
<tt>Sinatra::Base</tt> ist ein unbeschriebenes Blatt. Die meisten Optionen sind
per Standard deaktiviert. Das betrifft auch den eingebauten Server. Siehe
@ -1581,7 +1593,7 @@ Unterschiede beachtet werden:
Szenario Classic Modular
app_file file loading sinatra nil
app_file sinatra ladende Datei Sinatra::Base subklassierende Datei
run $0 == app_file false
logging true false
method_override true false
@ -1663,7 +1675,7 @@ andere Sinatra-Anwendung handeln, es kann jede andere Rack-Anwendung sein
get('/login') { haml :login }
post('/login') do
if params[:name] = 'admin' and params[:password] = 'admin'
if params[:name] == 'admin' && params[:password] == 'admin'
session['user_name'] = params[:name]
else
redirect '/login'
@ -1731,12 +1743,13 @@ Verfügung stehen.
=== Anwendungs- oder Klassen-Scope
Jede Sinatra-Anwendung entspricht einer Sinatra::Base-Subklasse. Falls die Top-
Level-DSL verwendet wird (<tt>require 'sinatra'</tt>), handelt es sich um
Sinatra::Application, andernfalls ist es jene Subklasse, die explizit angelegt
wurde. Auf Klassenebene stehen Methoden wie +get+ oder +before+ zur Verfügung,
es gibt aber keinen Zugriff auf das +request+-Object oder die +session+, da nur
eine einzige Klasse für alle eingehenden Anfragen genutzt wird.
Jede Sinatra-Anwendung entspricht einer <tt>Sinatra::Base</tt>-Subklasse. Falls
die Top- Level-DSL verwendet wird (<tt>require 'sinatra'</tt>), handelt es sich
um <tt>Sinatra::Application</tt>, andernfalls ist es jene Subklasse, die
explizit angelegt wurde. Auf Klassenebene stehen Methoden wie +get+ oder
+before+ zur Verfügung, es gibt aber keinen Zugriff auf das +request+-Object
oder die +session+, da nur eine einzige Klasse für alle eingehenden Anfragen
genutzt wird.
Optionen, die via +set+ gesetzt werden, sind Methoden auf Klassenebene:
@ -1853,9 +1866,11 @@ Die folgenden Versionen werden offiziell unterstützt:
sollte aber darauf geachtet werden, dass ein JRuby-Rack-Handler zum Einsatz
kommt der Thin-Web-Server wird bisher nicht unterstütz. JRubys
Unterstützung für C-Erweiterungen sind zur Zeit noch experimenteller Natur,
betrifft im Moment aber nur RDiscount.
betrifft im Moment aber nur RDiscount und Redcarpet.
<b>Ruby 1.8.6 wird nicht weiter unterstützt.</b>
<b>Ruby 1.8.6 wird nicht weiter unterstützt.</b> Falls Sinatra trotzdem unter
1.8.6 eingesetzt wird, muss Sinatra 1.2 verwendet werden, dass noch bis zum
Release von Sinatra 1.4.0 mit kleinen Bugfixes versorgt werden wird.
Weiterhin werden wir auf kommende Ruby-Versionen ein Auge haben.
@ -1865,7 +1880,6 @@ Sinatra unterstützt, funktionieren aber normalerweise:
* Ältere Versionen von JRuby und Rubinius
* MacRuby, Maglev, IronRuby
* Ruby 1.9.0 und 1.9.1
* Ruby 1.8.6 mit {backports}[https://github.com/marcandre/backports/#readme]
Nicht offiziell unterstützt bedeutet, dass wenn Sachen nicht funktionieren,
wir davon ausgehen, dass es nicht an Sinatra sondern an der jeweiligen
@ -1964,13 +1978,15 @@ SemVer und SemVerTag.
* {Projekt-Website}[http://sinatra.github.com/] - Ergänzende Dokumentation,
News und Links zu anderen Ressourcen.
* {Hilfe beisteuern}[http://sinatra.github.com/contributing.html] - Einen
* {Mitmachen}[http://sinatra.github.com/contributing.html] - Einen
Fehler gefunden? Brauchst du Hilfe? Hast du einen Patch?
* {Issue-Tracker}[http://github.com/sinatra/sinatra/issues]
* {Twitter}[http://twitter.com/sinatra]
* {Mailing-Liste}[http://groups.google.com/group/sinatrarb]
* {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] auf http://freenode.net
* {Sinatra Book}[http://sinatra-book.gittr.com] Kochbuch Tutorial
* {Sinatra Book Contrib}[http://sinatra-book-contrib.com/] Sinatra-Rezepte aus
der Community
* 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