mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
Update for the German README
fan[ci skip]per
This commit is contained in:
parent
cdec024109
commit
21923235de
1 changed files with 142 additions and 13 deletions
155
README.de.md
155
README.de.md
|
@ -1,7 +1,7 @@
|
|||
# Sinatra
|
||||
|
||||
*Wichtig: Dieses Dokument ist eine Übersetzung aus dem Englischen und unter
|
||||
Umständen nicht auf dem aktuellen Stand (aktuell Sinatra 1.4.2).*
|
||||
Umständen nicht auf dem aktuellen Stand (aktuell Sinatra 1.4.5).*
|
||||
|
||||
Sinatra ist eine
|
||||
[DSL](http://de.wikipedia.org/wiki/Domänenspezifische_Sprache), die das
|
||||
|
@ -222,6 +222,17 @@ get '/posts.?:format?' do
|
|||
end
|
||||
```
|
||||
|
||||
Routen können auch den query-Parameter verwenden:
|
||||
|
||||
``` ruby
|
||||
get '/posts' do
|
||||
# matches "GET /posts?title=foo&author=bar"
|
||||
title = params['title']
|
||||
author = params['author']
|
||||
# uses title and author variables; query is optional to the /posts route
|
||||
end
|
||||
```
|
||||
|
||||
Anmerkung: Solange man den sog. Path Traversal Attack-Schutz nicht deaktiviert
|
||||
(siehe weiter unten), kann es sein, dass der Request-Pfad noch vor dem
|
||||
Abgleich mit den Routen modifiziert wird.
|
||||
|
@ -261,6 +272,7 @@ get '/', :provides => ['rss', 'atom', 'xml'] do
|
|||
builder :feed
|
||||
end
|
||||
```
|
||||
`provides` durchsucht den Accept-Header der Anfrage
|
||||
|
||||
Eigene Bedingungen können relativ einfach hinzugefügt werden:
|
||||
|
||||
|
@ -801,6 +813,27 @@ RDoc geschrieben werden. Es ist aber möglich, einen Renderer für die Templates
|
|||
zu verwenden und einen anderen für das Layout, indem die
|
||||
`:layout_engine`-Option verwendet wird.
|
||||
|
||||
#### AsciiDoc Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Abhängigkeit</td>
|
||||
<td><a href="http://asciidoctor.org/" title="Asciidoctor">Asciidoctor</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dateierweiterungen</td>
|
||||
<td><tt>.asciidoc</tt>, <tt>.adoc</tt> und <tt>.ad</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beispiel</td>
|
||||
<td><tt>asciidoc :README, :layout_engine => :erb</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Da man aus dem AsciiDoc-Template heraus keine Ruby-Methoden aufrufen kann
|
||||
(ausgenommen `yield`), wird man üblicherweise locals verwenden wollen, mit
|
||||
denen man Variablen weitergibt.
|
||||
|
||||
#### Radius Templates
|
||||
|
||||
<table>
|
||||
|
@ -912,6 +945,44 @@ Creole geschrieben werden. Es ist aber möglich, einen Renderer für die Templat
|
|||
zu verwenden und einen anderen für das Layout, indem die `:layout_engine`-Option
|
||||
verwendet wird.
|
||||
|
||||
#### MediaWiki Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Abhängigkeit</td>
|
||||
<td><a href="https://github.com/nricciar/wikicloth" title="WikiCloth">WikiCloth</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dateierweiterungen</td>
|
||||
<td><tt>.mediawiki</tt> und <tt>.mw</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beispiel</td>
|
||||
<td><tt>mediawiki :wiki, :layout_engine => :erb</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Da man aus dem Mediawiki-Template heraus keine Ruby-Methoden aufrufen und auch
|
||||
keine locals verwenden kann, wird man Mediawiki üblicherweise in Kombination mit
|
||||
anderen Renderern verwenden wollen:
|
||||
|
||||
``` ruby
|
||||
erb :overview, :locals => { :text => mediawiki(:introduction) }
|
||||
```
|
||||
|
||||
Beachte: Man kann die `mediawiki`-Methode auch aus anderen Templates
|
||||
heraus aufrufen:
|
||||
|
||||
``` ruby
|
||||
%h1 Grüße von Haml!
|
||||
%p= mediawiki(:greetings)
|
||||
```
|
||||
|
||||
Da man Ruby nicht von MediaWiki heraus aufrufen kann, können auch Layouts nicht
|
||||
in MediaWiki geschrieben werden. Es ist aber möglich, einen Renderer für die
|
||||
Templates zu verwenden und einen anderen für das Layout, indem die
|
||||
`:layout_engine`-Option verwendet wird.
|
||||
|
||||
#### CoffeeScript Templates
|
||||
|
||||
<table>
|
||||
|
@ -1002,8 +1073,9 @@ json[:baz] = key
|
|||
Die `:callback` und `:variable` Optionen können mit dem gerenderten Objekt
|
||||
verwendet werden:
|
||||
|
||||
``` ruby
|
||||
var resource = {"foo":"bar","baz":"qux"}; present(resource);
|
||||
``` javascript
|
||||
var resource = {"foo":"bar","baz":"qux"};
|
||||
present(resource);
|
||||
```
|
||||
|
||||
#### WLang Templates
|
||||
|
@ -1023,9 +1095,9 @@ var resource = {"foo":"bar","baz":"qux"}; present(resource);
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
Ruby-Methoden in wlang aufzurufen entspricht nicht den idiomatischen Vorgaben
|
||||
von wlang, es bietet sich deshalb an, `:locals` zu verwenden. Layouts, die
|
||||
wlang und `yield` verwenden, werden aber trotzdem unterstützt.
|
||||
Ruby-Methoden in Wlang aufzurufen entspricht nicht den idiomatischen Vorgaben
|
||||
von Wlang, es bietet sich deshalb an, `:locals` zu verwenden. Layouts, die
|
||||
Wlang und `yield` verwenden, werden aber trotzdem unterstützt.
|
||||
|
||||
Rendert den eingebetteten Template-String.
|
||||
|
||||
|
@ -1177,6 +1249,23 @@ Dieser Code rendert `./views/application.mtt`. Siehe
|
|||
[github.com/rtomayko/tilt](https://github.com/rtomayko/tilt), um mehr über
|
||||
Tilt zu erfahren.
|
||||
|
||||
### Eigene Methoden zum Aufsuchen von Templates verwenden
|
||||
|
||||
Um einen eigenen Mechanismus zum Aufsuchen von Templates zu
|
||||
implementieren, muss `#find_template` definiert werden:
|
||||
|
||||
``` ruby
|
||||
configure do
|
||||
set :views [ './views/a', './views/b' ]
|
||||
end
|
||||
|
||||
def find_template(views, name, engine, &block)
|
||||
Array(views).each do |v|
|
||||
super(v, name, engine, &block)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Filter
|
||||
|
||||
Before-Filter werden vor jedem Request in demselben Kontext, wie danach die
|
||||
|
@ -1300,6 +1389,13 @@ Einstellungen ablegen.
|
|||
set :sessions, :domain => 'foo.com'
|
||||
```
|
||||
|
||||
Um eine Session mit anderen Apps und zwischen verschiedenen Subdomains
|
||||
von foo.com zu teilen, wird ein *.* der Domain vorangestellt:
|
||||
|
||||
``` ruby
|
||||
set :sessions, :domain => '.foo,com'
|
||||
```
|
||||
|
||||
### Anhalten
|
||||
|
||||
Zum sofortigen Stoppen eines Request in einem Filter oder einer Route:
|
||||
|
@ -1476,7 +1572,7 @@ get '/subscribe' do
|
|||
"Angemeldet"
|
||||
end
|
||||
|
||||
post '/message' do
|
||||
post '/:message' do
|
||||
connections.each do |out|
|
||||
# Den Client über eine neue Nachricht in Kenntnis setzen
|
||||
# notify client that a new message has arrived
|
||||
|
@ -1711,7 +1807,8 @@ etag '', :new_resource => true, :kind => :weak
|
|||
|
||||
### Dateien versenden
|
||||
|
||||
Zum Versenden von Dateien kann die `send_file`-Helfer-Methode verwendet werden:
|
||||
Um den Inhalt einer Datei als Response zurückzugeben, kann die
|
||||
`send_file`-Helfer-Methode verwendet werden:
|
||||
|
||||
```ruby
|
||||
get '/' do
|
||||
|
@ -2125,6 +2222,9 @@ set :protection, :except => [:path_traversal, :session_hijacking]
|
|||
<dd>Wird es auf <tt>true</tt> gesetzt, wird Thin aufgefordert
|
||||
<tt>EventMachine.defer</tt> zur Verarbeitung des Requests einzusetzen.</dd>
|
||||
|
||||
<dt>traps</dt>
|
||||
<dd>Einstellung, Sinatra System signalen umgehen soll.</dd>
|
||||
|
||||
<dt>views</dt>
|
||||
<dd>Verzeichnis der Views. Leitet sich von der <tt>app_file</tt> Einstellung
|
||||
ab, wenn nicht gesetzt.</dd>
|
||||
|
@ -2172,8 +2272,15 @@ end
|
|||
### Fehler
|
||||
|
||||
Der `error`-Handler wird immer ausgeführt, wenn eine Exception in einem
|
||||
Routen-Block oder in einem Filter geworfen wurde. Die Exception kann über die
|
||||
`sinatra.error`-Rack-Variable angesprochen werden:
|
||||
Routen-Block oder in einem Filter geworfen wurde. In der
|
||||
`development`-Umgebung wird es nur dann funktionieren, wenn die
|
||||
`:show_exceptions`-Option auf `:after_handler` eingestellt wurde:
|
||||
|
||||
```ruby
|
||||
set :show_exceptions, :after_handler
|
||||
```
|
||||
|
||||
Die Exception kann über die `sinatra.error`-Rack-Variable angesprochen werden:
|
||||
|
||||
```ruby
|
||||
error do
|
||||
|
@ -2353,12 +2460,24 @@ Veränderungen zu `Sinatra::Base` konvertiert werden:
|
|||
* Alle Routen, Error-Handler, Filter und Optionen der Applikation müssen in
|
||||
einer Subklasse von `Sinatra::Base` definiert werden.
|
||||
|
||||
|
||||
`Sinatra::Base` ist ein unbeschriebenes Blatt. Die meisten Optionen sind 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.
|
||||
|
||||
Damit eine App sich ähnlich wie eine klassische App verhält, kann man
|
||||
auch eine Subclass von `Sinatra::Application` erstellen:
|
||||
|
||||
``` ruby
|
||||
require 'sinatra/base'
|
||||
|
||||
class MyApp < Sinatra::Application
|
||||
get '/' do
|
||||
'Hello world!'
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
### Modularer vs. klassischer Stil
|
||||
|
||||
Entgegen häufiger Meinungen gibt es nichts gegen den klassischen Stil
|
||||
|
@ -2379,42 +2498,49 @@ werden:
|
|||
<th>Szenario</th>
|
||||
<th>Classic</th>
|
||||
<th>Modular</th>
|
||||
<th>Modular</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>app_file</td>
|
||||
<td>Sinatra ladende Datei</td>
|
||||
<td>Sinatra::Base subklassierende Datei</td>
|
||||
<td>Sinatra::Application subklassierende Datei</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>run</td>
|
||||
<td>$0 == app_file</td>
|
||||
<td>false</td>
|
||||
<td>false</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>logging</td>
|
||||
<td>true</td>
|
||||
<td>false</td>
|
||||
<td>true</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>method_override</td>
|
||||
<td>true</td>
|
||||
<td>false</td>
|
||||
<td>true</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>inline_templates</td>
|
||||
<td>true</td>
|
||||
<td>false</td>
|
||||
<td>true</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>static</td>
|
||||
<td>true</td>
|
||||
<td>false</td>
|
||||
<td>true</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -2714,6 +2840,9 @@ auftreten.</dd>
|
|||
Upgrade von einer früheren Version von Ruby zu Ruby 1.9.3 werden alle Sessions
|
||||
ungültig. Ruby 1.9.3 wird bis Sinatra 2.0 unterstützt werden.</dd>
|
||||
|
||||
<dt>Ruby 2.x</dt>
|
||||
<dd>2.x wird vollständig unterstützt.</dd>
|
||||
|
||||
<dt>Rubinius</dt>
|
||||
<dd>Rubinius (Version >= 2.x) wird offiziell unterstützt. Es wird empfohlen, den
|
||||
<a href="http://puma.io">Puma Server</a> zu installieren (<tt>gem install puma
|
||||
|
@ -2738,8 +2867,8 @@ wir davon ausgehen, dass es nicht an Sinatra sondern an der jeweiligen
|
|||
Implementierung liegt.
|
||||
|
||||
Im Rahmen unserer CI (Kontinuierlichen Integration) wird bereits ruby-head
|
||||
(das kommende Ruby 2.1.0) mit eingebunden. Es kann davon ausgegangen
|
||||
werden, dass Sinatra Ruby 2.1.0 vollständig unterstützen wird.
|
||||
(zukünftige Versionen von MRI) mit eingebunden. Es kann davon ausgegangen
|
||||
werden, dass Sinatra MRI auch weiterhin vollständig unterstützen wird.
|
||||
|
||||
Sinatra sollte auf jedem Betriebssystem laufen, dass einen funktionierenden
|
||||
Ruby-Interpreter aufweist.
|
||||
|
|
Loading…
Add table
Reference in a new issue