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:
parent
470c5f8a7d
commit
54fb37fd9a
1 changed files with 103 additions and 39 deletions
120
README.de.rdoc
120
README.de.rdoc
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue