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

complete update for README.de.rdoc

Signed-off-by: Konstantin Haase <konstantin.mailinglists@googlemail.com>
This commit is contained in:
burningTyger 2011-04-01 21:52:48 +02:00 committed by Konstantin Haase
parent 470c5f8a7d
commit 54fb37fd9a

View file

@ -851,6 +851,11 @@ teilen:
set :session_secret, 'super secret' set :session_secret, 'super secret'
Zur weiteren Konfiguration kann man einen Hash mit Optionen in den +sessions+
Einstellungen ablegen.
set :sessions, :domain => 'foo.com'
== Anhalten == Anhalten
@ -955,6 +960,31 @@ Vergleichbar mit +body+ lassen sich auch Status-Code und Header setzen:
Genau wie bei +body+ liest ein Aufrufen von +headers+ oder +status+ ohne Genau wie bei +body+ liest ein Aufrufen von +headers+ oder +status+ ohne
Argumente den aktuellen Wert aus. Argumente den aktuellen Wert aus.
=== Logger
Im Geltungsbereich eines Request stellt die +logger+ Helfer-Methode eine
+Logger+ Instanz zur Verfügung:
get '/' do
logger.info "es passiert gerade etwas"
# ...
end
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:
class MyApp < Sinatra::Base
configure(:production, :development) do
enable :logging
end
end
== Mime-Types == Mime-Types
@ -1073,29 +1103,33 @@ zugegriffen werden:
# App läuft unter http://example.com/example # App läuft unter http://example.com/example
get '/foo' do get '/foo' do
request.body # Request-Body des Clients (siehe unten) t = %w[text/css text/html application/javascript]
request.accept # ['text/html', '*/*']
request.accept? 'text/xml' # true
request.preferred_type(t) # 'text/html'
request.body # Request-Body des Client (siehe unten)
request.scheme # "http" request.scheme # "http"
request.script_name # "/example" request.script_name # "/example"
request.path_info # "/foo" request.path_info # "/foo"
request.port # 80 request.port # 80
request.request_method # "GET" request.request_method # "GET"
request.query_string # "" request.query_string # ""
request.content_length # Länge von request.body request.content_length # Länge des request.body
request.media_type # Media-Type von request.body request.media_type # Medientypus von request.body
request.host # "example.com" request.host # "example.com"
request.get? # true (ähnliche Methoden für andere Verben) request.get? # true (ähnliche Methoden für andere Verben)
request.form_data? # false request.form_data? # false
request["SOME_HEADER"] # Wert des SOME_HEADER-Headers request["IRGENDEIN_HEADER"] # Wert von IRGENDEIN_HEADER header
request.referrer # der Referrer des Clients oder '/' request.referrer # Der Referrer des Clients oder '/'
request.user_agent # User-Agent (genutzt von :agent-Bedingung) request.user_agent # User-Agent (verwendet in der :agent Bedingung)
request.cookies # Hash der Cookies request.cookies # Hash des Browser-Cookies
request.xhr? # Ist dies eine Ajax-Anfrage? request.xhr? # Ist das hier ein Ajax-Request?
request.url # "http://example.com/example/foo" request.url # "http://example.com/example/foo"
request.path # "/example/foo" request.path # "/example/foo"
request.ip # Client-IP-Addresse request.ip # IP-Adresse des Clients
request.secure? # false (wäre true bei SSL) request.secure? # false (true wenn SSL)
request.forwarded? # true (wenn hinter Reverse-Proxy) request.forwarded? # true (Wenn es hinter einem Reverse-Proxy verwendet wird)
requuest.env # env-Hash, den Rack durchreicht request.env # vollständiger env-Hash von Rack übergeben
end end
Manche Optionen, wie etwa <tt>script_name</tt> oder <tt>path_info</tt>, sind Manche Optionen, wie etwa <tt>script_name</tt> oder <tt>path_info</tt>, sind
@ -1292,10 +1326,7 @@ Diese Einstellungen sind über +settings+ erreichbar:
[public] Das öffentliche Verzeichnis, aus dem Daten zur Verfügung [public] Das öffentliche Verzeichnis, aus dem Daten zur Verfügung
gestellt werden können. gestellt werden können.
[reload_templates] Entscheidet, ob Templates zwischen Anfragen neu geladen [reload_templates] Im development-Modus aktiviert.
werden sollen oder nicht. Unter Ruby 1.8.6 ist es im
Entwicklungsmodus eingeschaltet (um einen Fehler in Ruby
auszugleichen, der ein Speicherleck verursacht).
[root] Wurzelverzeichnis des Projekts. [root] Wurzelverzeichnis des Projekts.
@ -1638,6 +1669,47 @@ andere Sinatra-Anwendung handeln, es kann jede andere Rack-Anwendung sein
get('/') { "Hallo #{session['user_name']}." } get('/') { "Hallo #{session['user_name']}." }
end end
=== Dynamische Applikationserstellung
Manche Situationen erfordern die Erstellung neuer Applikationen zur Laufzeit,
ohne dass sie einer Konstanten zugeordnet werden. Dies lässt sich mit
`Sinatra.new` erreichen:
require 'sinatra/base'
my_app = Sinatra.new { get('/') { "hallo" } }
my_app.run!
Die Applikation kann mit Hilfe eines optionalen Parameters erstellt werden:
require 'sinatra/base'
controller = Sinatra.new do
enable :logging
helpers MyHelpers
end
map('/a') do
run Sinatra.new(controller) { get('/') { 'a' } }
end
map('/b') do
run Sinatra.new(controller) { get('/') { 'b' } }
end
Das ist besonders dann interessant, wenn Sinatra-Erweiterungen getestet werden
oder Sinatra in einer Bibliothek Verwendung findet.
Ebenso lassen sich damit hervorragend Sinatra-Middlewares erstellen:
require 'sinatra/base'
use Sinatra do
get('/') { ... }
end
run RailsProject::Application
== Geltungsbereich und Bindung == Geltungsbereich und Bindung
@ -1672,6 +1744,7 @@ Im Anwendungs-Scope befindet man sich:
* In Methoden, die von Erweiterungen definiert werden. * In Methoden, die von Erweiterungen definiert werden.
* Im Block, der an +helpers+ übergeben wird. * Im Block, der an +helpers+ übergeben wird.
* In Procs und Blöcken, die an +set+ übergeben werden. * In Procs und Blöcken, die an +set+ übergeben werden.
* Der an <tt>Sinatra.new</tt> übergebene Block
Auf das Scope-Objekt (die Klasse) kann wie folgt zugegriffen werden: Auf das Scope-Objekt (die Klasse) kann wie folgt zugegriffen werden:
@ -1751,20 +1824,8 @@ Die Optionen sind:
== Systemanforderungen == Systemanforderungen
Es wird empfohlen, Sinatra unter Ruby 1.8.7, 1.9.2, JRuby oder Rubinius zu
installieren.
Die folgenden Versionen werden offiziell unterstützt: Die folgenden Versionen werden offiziell unterstützt:
[ Ruby 1.8.6 ]
Es wird nicht empfohlen, 1.8.6 für Sinatra einzusetzen. Trotzdem wird es
offiziell bis Sinatra 1.3.0 unterstützt werden. RDoc- und CoffeeScript-
Templates werden in dieser Version nicht unterstützt. 1.8.6 hat ein größeres
Speicherleck in seiner Hash-Implementation, das von Sinatra-Versionen vor
1.1.1 ausgelöst wird. Die aktuelle Version verhindert das zwar explizit, aber
unter Einbußen in der Performance. Ebenso muss Sinatra mit Rack 1.1.x laufen,
da Rack >= 1.2 Ruby 1.8.6 nicht mehr unterstützt.
[ Ruby 1.8.7 ] [ Ruby 1.8.7 ]
1.8.7 wird vollständig unterstützt, aber solange nichts dagegen spricht, 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. wird ein Update auf 1.9.2 oder ein Umstieg auf JRuby/Rubinius empfohlen.
@ -1786,6 +1847,8 @@ Die folgenden Versionen werden offiziell unterstützt:
Unterstützung für C-Erweiterungen sind zur Zeit noch experimenteller Natur, Unterstützung für C-Erweiterungen sind zur Zeit noch experimenteller Natur,
betrifft im Moment aber nur RDiscount. betrifft im Moment aber nur RDiscount.
<b>Ruby 1.8.6 wird nicht weiter unterstützt.</b>
Weiterhin werden wir auf kommende Ruby-Versionen ein Auge haben. Weiterhin werden wir auf kommende Ruby-Versionen ein Auge haben.
Die nachfolgend aufgeführten Ruby-Implementationen werden offiziell nicht von Die nachfolgend aufgeführten Ruby-Implementationen werden offiziell nicht von
@ -1794,6 +1857,7 @@ Sinatra unterstützt, funktionieren aber normalerweise:
* Ältere Versionen von JRuby und Rubinius * Ältere Versionen von JRuby und Rubinius
* MacRuby, Maglev, IronRuby * MacRuby, Maglev, IronRuby
* Ruby 1.9.0 und 1.9.1 * 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, Nicht offiziell unterstützt bedeutet, dass wenn Sachen nicht funktionieren,
wir davon ausgehen, dass es nicht an Sinatra sondern an der jeweiligen wir davon ausgehen, dass es nicht an Sinatra sondern an der jeweiligen