From 35baa57283c521de0f600533ed1816d401697b37 Mon Sep 17 00:00:00 2001 From: burningTyger Date: Sun, 24 Mar 2013 21:32:48 +0100 Subject: [PATCH 1/2] small README fixes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5e96edf40f..867961e782 100644 --- a/README.md +++ b/README.md @@ -2093,18 +2093,18 @@ set :protection, :session => true
running
-
is the built-in server running now? do not change this setting!
+
is the built-in server running now? Do not change this setting!
server
- Server or list of servers to use for built-in server. order indicates priority, - default depends on Ruby implementation. + Server or list of servers to use for built-in server. Order indicates + priority, default depends on Ruby implementation.
sessions
Enable cookie-based sessions support using Rack::Session::Cookie. - See 'Using Sessions' section for more information. + See 'Using Sessions' section for more information.
show_exceptions
From c4d88f47f935de285f777c7665de1af820a976e4 Mon Sep 17 00:00:00 2001 From: burningTyger Date: Sun, 24 Mar 2013 21:42:36 +0100 Subject: [PATCH 2/2] prettify the German README [ci-skip] --- README.de.md | 220 +++++++++++++++++++++++++-------------------------- 1 file changed, 109 insertions(+), 111 deletions(-) diff --git a/README.de.md b/README.de.md index 27e8e11b0a..36852c6ae6 100644 --- a/README.de.md +++ b/README.de.md @@ -1,32 +1,36 @@ # Sinatra *Wichtig: Dieses Dokument ist eine Übersetzung aus dem Englischen und unter -Umständen nicht auf dem aktuellen Stand.* +Umständen nicht auf dem aktuellen Stand (aktuell Sinatra 1.4.2).* Sinatra ist eine [DSL](http://de.wikipedia.org/wiki/Domänenspezifische_Sprache), die das schnelle Erstellen von Webanwendungen in Ruby mit minimalem Aufwand ermöglicht: +Sinatra via `rubygems` installieren: + +```shell +gem install sinatra +``` + +Eine Date mit dem Namen `myapp.rb` erstellen: + ```ruby -# myapp.rb require 'sinatra' get '/' do 'Hallo Welt!' end ``` -Einfach via `rubygems` installieren und starten: +und im gleichen Verzeichnis ausführen: -```ruby -gem install sinatra +```shell ruby myapp.rb ``` -Die Seite kann nun unter http://localhost:4567 betrachtet werden. - -Es wird empfohlen, den Thin-Server via `gem install thin` zu installieren, den -Sinatra dann, soweit vorhanden, automatisch verwendet. +Die Seite kann nun unter [http://localhost:4567](http://localhost:4567) +aufgerufen werden. ## Inhalt @@ -145,7 +149,6 @@ end unlink '/' do .. trenne etwas .. end - ``` Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden. @@ -157,7 +160,7 @@ Die Muster der Routen können benannte Parameter beinhalten, die über den ```ruby get '/hallo/:name' do # passt auf "GET /hallo/foo" und "GET /hallo/bar" - # params[:name] ist 'foo' oder 'bar' + # params[:name] ist dann 'foo' oder 'bar' "Hallo #{params[:name]}!" end ``` @@ -166,16 +169,17 @@ Man kann auf diese auch mit Block-Parametern zugreifen: ```ruby get '/hallo/:name' do |n| + # n entspricht hier params[:name] "Hallo #{n}!" end ``` -Routen-Muster können auch mit Splat- oder Wildcard-Parametern über das +Routen-Muster können auch mit sog. Splat- oder Wildcard-Parametern über das `params[:splat]`-Array angesprochen werden: ```ruby get '/sag/*/zu/*' do - # passt auf /sag/hallo/zu/welt + # passt z.B. auf /sag/hallo/zu/welt params[:splat] # => ["hallo", "welt"] end @@ -224,21 +228,25 @@ Abgleich mit den Routen modifiziert wird. ### Bedingungen -An Routen können eine Vielzahl von Bedingungen angehängt werden, die erfüllt +An Routen können eine Vielzahl von Bedingungen geknüpft werden, die erfüllt sein müssen, damit der Block ausgeführt wird. Möglich wäre etwa eine -Einschränkung des User-Agents: +Einschränkung des User-Agents über die interne Bedingung `:agent`: ```ruby get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do "Du verwendest Songbird Version #{params[:agent][0]}" end +``` +Wird Songbird als Browser nicht verwendet, springt Sinatra zur nächsten Route: + +```ruby get '/foo' do # passt auf andere Browser end ``` -Andere mitgelieferte Bedingungen sind `host_name` und `provides`: +Andere mitgelieferte Bedingungen sind `:host_name` und `:provides`: ```ruby get '/', :host_name => /^admin\./ do @@ -254,12 +262,12 @@ get '/', :provides => ['rss', 'atom', 'xml'] do end ``` -Es können auch andere Bedingungen relativ einfach hinzugefügt werden: +Eigene Bedingungen können relativ einfach hinzugefügt werden: ```ruby -set(:probability) { |value| condition { rand <= value } } +set(:wahrscheinlichkeit) { |value| condition { rand <= value } } -get '/auto_gewinnen', :probability => 0.1 do +get '/auto_gewinnen', :wahrscheinlichkeit => 0.1 do "Du hast gewonnen!" end @@ -308,7 +316,6 @@ einen Rack-Rückgabewert, einen Rack-Body oder einen HTTP-Status-Code handelt: Block nur mit Strings als Übergabewerte aufruft. * Ein Fixnum, das den Status-Code festlegt. - Damit lässt sich relativ einfach Streaming implementieren: ```ruby @@ -370,16 +377,17 @@ get %r{^(?!/index$)} do # ... end ``` + ## Statische Dateien -Statische Dateien werden aus dem `./public`-Ordner ausgeliefert. Es ist möglich, +Statische Dateien werden im `./public`-Ordner erwartet. Es ist möglich, einen anderen Ort zu definieren, indem man die `:public_folder`-Option setzt: ```ruby set :public_folder, File.dirname(__FILE__) + '/static' ``` -Zu beachten ist, dass der Ordnername public nicht Teil der URL ist. Die Datei +Zu beachten ist, dass der Ordnername `public` nicht Teil der URL ist. Die Datei `./public/css/style.css` ist unter `http://example.com/css/style.css` zu finden. Um den `Cache-Control`-Header mit Informationen zu versorgen, verwendet man @@ -426,7 +434,8 @@ get '/' do end ``` -Für alle Templates können auch generelle Einstellungen festgelegt werden: +Für alle Templates können auch Einstellungen, die für alle Routen gelten, +festgelegt werden: ```ruby set :haml, :format => :html5 @@ -443,7 +452,7 @@ Einstellungen:
locals
-
Liste von lokalen Variablen, die and das Dokument weitergegeben werden. +
Liste von lokalen Variablen, die an das Dokument weitergegeben werden. Praktisch für Partials: erb "<%= foo %>", :locals => {:foo => "bar"}
@@ -453,7 +462,7 @@ Einstellungen: auf settings.default_encoding.
views
-
Ordner, aus dem die Templates heraus geladen werden. Voreingestellt auf +
Ordner, aus dem die Templates geladen werden. Voreingestellt auf settings.views.
layout
@@ -464,7 +473,7 @@ Einstellungen: erb :index, :layout => !request.xhr?
content_type
-
Content-Type den das Template ausgibt. Voreinstellung hängt von der +
Content-Typ den das Template ausgibt. Voreinstellung hängt von der Templatesprache ab.
scope
@@ -478,6 +487,7 @@ Einstellungen: den Renderer, der für das Template verwendet wird: set :rdoc, :layout_engine => :erb +
layout_options
Besondere Einstellungen, die nur für das Rendering verwendet werden: @@ -1045,8 +1055,8 @@ Templates eingesetzt. ### Templates mit `yield` und verschachtelte Layouts -Ein Layout ist üblicherweise ein Template, dass ein `yield` aufruft. Ein solches -Template kann entweder wie oben beschrieben über die `:template` option +Ein Layout ist üblicherweise ein Template, das ein `yield` aufruft. Ein solches +Template kann entweder wie oben beschrieben über die `:template` Option verwendet werden oder mit einem Block gerendert werden: ``` ruby @@ -1130,7 +1140,9 @@ verwendet. Durch `:layout => false` kann das Ausführen verhindert werden: ```ruby get '/' do - haml :index, :layout => request.xhr? + haml :index, :layout => !request.xhr? + # !request.xhr? prüft, ob es sich um einen asynchronen Request handelt. + # wenn nicht, dann verwende ein Layout (negiert durch !) end ``` @@ -1194,8 +1206,8 @@ after do end ``` -Filter können optional auch mit einem Muster ausgestattet werden, welches auf -den Request-Pfad passen muss, damit der Filter ausgeführt wird: +Filter können optional auch mit einem Muster ausgestattet werden, das auf den +Request-Pfad passen muss, damit der Filter ausgeführt wird: ```ruby before '/protected/*' do @@ -1278,7 +1290,7 @@ wählen, damit sich alle Instanzen der Applikation dasselbe Session-Secret teilen: ```ruby -set :session_secret, 'super secret' +set :session_secret, 'super_geheimes_Gegeimnis' ``` Zur weiteren Konfiguration kann man einen Hash mit Optionen in den `sessions` @@ -1296,7 +1308,7 @@ Zum sofortigen Stoppen eines Request in einem Filter oder einer Route: halt ``` -Der Status kann beim Stoppen auch angegeben werden: +Der Status kann beim Stoppen mit angegeben werden: ```ruby halt 410 @@ -1347,8 +1359,9 @@ gefunden wird. ### Eine andere Route ansteuern -Manchmal entspricht `pass` nicht den Anforderungen, wenn das Ergebnis einer -anderen Route gefordert wird. Um das zu erreichen, lässt sich `call` nutzen: +Wenn nicht zu einer anderen Route gesprungen werden soll, sondern nur das +Ergebnis einer anderen Route gefordert wird, kann `call` für einen internen +Request verwendet werden: ```ruby get '/foo' do @@ -1369,16 +1382,13 @@ Wenn der Request innerhalb derselben Applikations-Instanz aufgerufen und keine Kopie der Instanz erzeugt werden soll, kann `call!` anstelle von `call` verwendet werden. -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 Returnwert in der Route zu setzen. In manchen Situationen kann es jedoch -sein, dass der Body an irgendeiner anderen Stelle während der Ausführung -gesetzt wird. Das lässt sich mit der Helfer-Methode `body` bewerkstelligen. -Wird `body` verwendet, lässt sich der Body jederzeit über diese Methode -aufrufen: +Es ist möglich und empfohlen, den Status-Code sowie den Response-Body mit einem +Returnwert in der Route zu setzen. In manchen Situationen kann es jedoch sein, +dass der Body an anderer Stelle während der Ausführung gesetzt werden soll. +Dafür kann man die Helfer-Methode `body` einsetzen. Ist sie gesetzt, kann sie zu +einem späteren Zeitpunkt aufgerufen werden: ```ruby get '/foo' do @@ -1430,7 +1440,7 @@ end ``` Damit lassen sich Streaming-APIs realisieren, sog. -[Server Sent Events](http://dev.w3.org/html5/eventsource/) die als Basis für +[Server Sent Events](http://dev.w3.org/html5/eventsource/), die als Basis für [WebSockets](http://en.wikipedia.org/wiki/WebSocket) dienen. Ebenso können sie verwendet werden, um den Durchsatz zu erhöhen, wenn ein Teil der Daten von langsamen Ressourcen abhängig ist. @@ -1987,6 +1997,7 @@ Schutzmechanismen zu deaktivieren: ```ruby set :protection, :except => [:path_traversal, :session_hijacking] ``` + #### Mögliche Einstellungen
@@ -2010,8 +2021,9 @@ set :protection, :except => [:path_traversal, :session_hijacking] Inline-, View- und öffentliche Verzeichnis des Projekts festzustellen.
bind
-
IP-Address, an die gebunden wird (Standardwert: 0.0.0.0). Wird - nur für den eingebauten Server verwendet.
+
IP-Address, an die gebunden wird (Standardwert: 0.0.0.0 + oder localhost). Wird nur für den eingebauten Server + verwendet.
default_encoding
Das Encoding, falls keines angegeben wurde. Standardwert ist @@ -2080,8 +2092,8 @@ set :protection, :except => [:path_traversal, :session_hijacking]
server
Server oder Liste von Servern, die als eingebaute Server zur Verfügung - stehen. Standardmäßig auf [‘thin’, ‘mongrel’, ‘webrick’] - voreingestellt. Die Anordnung gibt die Priorität vor.
+ stehen. Die Reihenfolge gibt die Priorität vor, die Voreinstellung hängt von + der verwendenten Ruby Implementierung ab.
sessions
Sessions auf Cookiebasis mittels @@ -2134,7 +2146,7 @@ und `"test"` werden Templates automatisch gecached. Um die Anwendung in einer anderen Umgebung auszuführen kann man die `-e` Option verwenden: -``` +```shell ruby my_app.rb -e [ENVIRONMENT] ``` @@ -2187,7 +2199,7 @@ end bekommt man dieses: -``` +```shell Au weia, etwas Schlimmes ist passiert ``` @@ -2426,7 +2438,7 @@ end Starte mit: -``` +```shell ruby mein_app.rb ``` @@ -2441,7 +2453,7 @@ run MeineApp Starte: -``` +```shell rackup -p 4567 ``` @@ -2637,8 +2649,8 @@ end Im Anfrage-Scope befindet man sich: -* In get/head/post/put/delete-Blöcken -* In before/after-Filtern +* In get, head, post, put, delete, options, patch, link und unlink Blöcken +* In before und after Filtern * In Helfer-Methoden * In Templates @@ -2668,7 +2680,7 @@ eingebunden](http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb Sinatra-Anwendungen können direkt von der Kommandozeile aus gestartet werden: -``` +```shell ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-h HOST] [-s HANDLER] ``` @@ -2688,67 +2700,52 @@ Die Optionen sind: Die folgenden Versionen werden offiziell unterstützt:
-
Ruby 1.8.7
-
1.8.7 wird vollständig unterstützt, aber solange nichts dagegen spricht, - wird ein Update auf 1.9.2 oder ein Umstieg auf JRuby/Rubinius empfohlen. - Unterstützung für 1.8.7 wird es mindestens bis Sinatra 2.0 und Ruby 2.0 - geben, es sei denn, dass der unwahrscheinliche Fall eintritt und 1.8.8 - rauskommt. Doch selbst dann ist es eher wahrscheinlich, dass 1.8.7 weiterhin - unterstützt wird. Ruby 1.8.6 wird nicht mehr unterstützt. Soll Sinatra - unter 1.8.6 eingesetzt werden, muss Sinatra 1.2 verwendet werden, dass noch - bis zum Release von Sinatra 1.4.0 fortgeführt wird.
- -
Ruby 1.9.2
-
1.9.2 wird voll unterstützt und empfohlen. Version 1.9.2p0 sollte nicht - verwendet werden, da unter Sinatra immer wieder Segfaults auftreten. - Unterstützung wird es mindestens bis zum Release von Ruby 1.9.4/2.0 geben und - das letzte Sinatra Release für 1.9 wird so lange unterstützt, wie das Ruby - Core-Team 1.9 pflegt.
- -
Ruby 1.9.3
-
1.9.3 wird vollständig unterstützt und empfohlen. Achtung, bei einem - Wechsel zu 1.9.3 werden alle Sessions ungültig.
- -
Rubinius
-
Rubinius (rbx >= 1.2.4) wird offiziell unter Einbezug aller Templates - unterstützt. Die kommende 2.0 Version wird ebenfalls unterstützt, samt 1.9 - Modus.
- -
JRuby
-
JRuby wird offiziell unterstützt (JRuby >= 1.6.7). Probleme mit - Template- Bibliotheken Dritter sind nicht bekannt. Falls JRuby zum Einsatz - kommt, sollte aber darauf geachtet werden, dass ein JRuby-Rack-Handler zum - Einsatz kommt – die Thin und Mongrel Web-Server werden bisher nicht - unterstütz. JRubys Unterstützung für C-Erweiterungen sind zur Zeit ebenfalls - experimenteller Natur, betrifft im Moment aber nur die RDiscount, Redcarpet, - RedCloth und [[Yajl]] Templates.
+
Ruby 1.8.7
+
1.8.7 wird vollständig unterstützt, ein Wechsel zu JRuby oder Rubinius wird +aber empfohlen. Ruby 1.8.7 wird noch bis Sinatra 2.0 unterstützt werden. Frühere +Versionen von Ruby sind nicht kompatibel mit Sinatra.
+ +
Ruby 1.9.2
+
1.9.2 wird mindestens bis Sinatra 1.5 voll unterstützt. Version 1.9.2p0 +sollte nicht verwendet werden, da unter Sinatra immer wieder Segfaults +auftreten.
+ +
Ruby 1.9.3
+
1.9.3 wird vollständig unterstützt und empfohlen. Achtung, bei einem +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.
+ +
Rubinius
+
Rubinius (Version >= 2.x) wird offiziell unterstützt. Es wird empfohlen, den +Puma Server zu installieren (gem install puma +)
+ +
JRuby
+
Aktuelle JRuby Versionen werden offiziell unterstützt. Es wird empfohlen, +keine C-Erweiterungen zu verwenden und als Server Trinidad zu verwenden +(gem install trinidad).
-Weiterhin werden wir die kommende Ruby-Versionen im Auge behalten. - Die nachfolgend aufgeführten Ruby-Implementierungen werden offiziell nicht von Sinatra unterstützt, funktionieren aber normalerweise: * Ruby Enterprise Edition * Ältere Versionen von JRuby und Rubinius -* MacRuby, Maglev, IronRuby -* Ruby 1.9.0 und 1.9.1 (wird jedoch nicht empfohlen, s.o.) - +* MacRuby (gem install control_tower wird empfohlen), Maglev, IronRuby +* Ruby 1.9.0 und 1.9.1 Nicht offiziell unterstützt bedeutet, dass wenn Sachen nicht funktionieren, wir davon ausgehen, dass es nicht an Sinatra sondern an der jeweiligen -Implentierung liegt. +Implementierung liegt. Im Rahmen unserer CI (Kontinuierlichen Integration) wird bereits ruby-head -(das kommende Ruby 2.0.0) und 1.9.4 mit eingebunden. Da noch alles im Fluss -ist, kann zur Zeit für nichts garantiert werden. Es kann aber erwartet werden, -dass Ruby 2.0.0p0 und 1.9.4p0 von Sinatra unterstützt werden wird. +(das kommende Ruby 2.1.0) mit eingebunden. Es kann davon ausgegangen +werden, dass Sinatra Ruby 2.1.0 vollständig unterstützen wird. -Sinatra sollte auf jedem Betriebssystem laufen, dass den gewählten Ruby- -Interpreter unterstützt. +Sinatra sollte auf jedem Betriebssystem laufen, dass einen funktionierenden +Ruby-Interpreter aufweist. -Sinatra wird aktuell nicht unter Cardinal, SmallRuby, BleuRuby oder -irgendeiner Version von Ruby vor 1.8.7 laufen. +Sinatra läuft aktuell nicht unter Cardinal, SmallRuby, BlueRuby oder Ruby <= 1.8.7. ## Der neuste Stand (The Bleeding Edge) @@ -2756,7 +2753,7 @@ 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: -``` +```shell gem install sinatra --pre ``` @@ -2768,7 +2765,7 @@ nachfolgenden Weg. Soweit Bundler noch nicht installiert ist: -``` +```shell gem install bundler ``` @@ -2790,16 +2787,16 @@ Gemfile von Sinatra hinzugefügt. Jetzt kannst du deine Applikation starten: -``` +```shell bundle exec ruby myapp.rb ``` ### Eigenes Repository Um auf dem neuesten Stand von Sinatras Code zu sein, kann eine lokale Kopie -angelegt werden. Gestartet wird in der Anwendung mit dem `sinatra/lib`- Ordner +angelegt werden. Gestartet wird in der Anwendung mit dem `sinatra/lib`-Ordner im `LOAD_PATH`: -``` +```shell cd myapp git clone git://github.com/sinatra/sinatra.git ruby -Isinatra/lib myapp.rb @@ -2820,7 +2817,7 @@ end Um Sinatra-Code von Zeit zu Zeit zu aktualisieren: -``` +```shell cd myproject/sinatra git pull ``` @@ -2829,7 +2826,7 @@ git pull Aus der eigenen lokalen Kopie kann nun auch ein globales Gem gebaut werden: -``` +```shell git clone git://github.com/sinatra/sinatra.git cd sinatra rake sinatra.gemspec @@ -2839,7 +2836,7 @@ rake install Falls Gems als Root installiert werden sollen, sollte die letzte Zeile folgendermaßen lauten: -``` +```shell sudo rake install ``` @@ -2857,7 +2854,8 @@ SemVer und SemVerTag. * [Issue-Tracker](http://github.com/sinatra/sinatra/issues) * [Twitter](http://twitter.com/sinatra) * [Mailing-Liste](http://groups.google.com/group/sinatrarb) -* [ #sinatra](irc://chat.freenode.net/#sinatra) auf http://freenode.net +* [#sinatra](irc://chat.freenode.net/#sinatra) auf http://freenode.net Es + gibt dort auch immer wieder deutschsprachige Entwickler, die gerne weiterhelfen. * [Sinatra Book](http://sinatra-book.gittr.com) Kochbuch Tutorial * [Sinatra Recipes](http://recipes.sinatrarb.com/) Sinatra-Rezepte aus der Community