Merge branch 'master' of github.com:sinatra/sinatra
Conflicts: Gemfile
This commit is contained in:
commit
9543429bce
1
Gemfile
1
Gemfile
|
@ -45,6 +45,7 @@ gem 'rabl' unless RUBY_ENGINE =~ /jruby|maglev/
|
||||||
gem 'wlang', '>= 2.0.1' unless RUBY_ENGINE =~ /jruby|rbx/
|
gem 'wlang', '>= 2.0.1' unless RUBY_ENGINE =~ /jruby|rbx/
|
||||||
gem 'therubyracer' unless RUBY_ENGINE =~ /jruby|rbx/
|
gem 'therubyracer' unless RUBY_ENGINE =~ /jruby|rbx/
|
||||||
gem 'redcarpet' unless RUBY_ENGINE == 'jruby'
|
gem 'redcarpet' unless RUBY_ENGINE == 'jruby'
|
||||||
|
gem 'bluecloth' unless RUBY_ENGINE == 'jruby'
|
||||||
|
|
||||||
if RUBY_ENGINE != 'rbx' or RUBY_VERSION < '1.9'
|
if RUBY_ENGINE != 'rbx' or RUBY_VERSION < '1.9'
|
||||||
gem 'liquid'
|
gem 'liquid'
|
||||||
|
|
282
README.de.md
282
README.de.md
|
@ -53,6 +53,15 @@ Jeder dieser Routen wird ein Ruby-Block zugeordnet:
|
||||||
options '/' do
|
options '/' do
|
||||||
.. zeige, was wir können ..
|
.. zeige, was wir können ..
|
||||||
end
|
end
|
||||||
|
|
||||||
|
link '/' do
|
||||||
|
.. verbinde etwas ..
|
||||||
|
end
|
||||||
|
|
||||||
|
unlink '/' do
|
||||||
|
.. trenne etwas ..
|
||||||
|
end
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden.
|
Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden.
|
||||||
|
@ -351,7 +360,8 @@ Einstellungen:
|
||||||
<dl>
|
<dl>
|
||||||
<dt>locals</dt>
|
<dt>locals</dt>
|
||||||
<dd>Liste von lokalen Variablen, die and das Dokument weitergegeben werden.
|
<dd>Liste von lokalen Variablen, die and das Dokument weitergegeben werden.
|
||||||
Praktisch für Partials. Beispiel:
|
Praktisch für Partials:
|
||||||
|
|
||||||
<tt>erb "<%= foo %>", :locals => {:foo => "bar"}</tt></dd>
|
<tt>erb "<%= foo %>", :locals => {:foo => "bar"}</tt></dd>
|
||||||
|
|
||||||
<dt>default_encoding</dt>
|
<dt>default_encoding</dt>
|
||||||
|
@ -364,9 +374,10 @@ Einstellungen:
|
||||||
|
|
||||||
<dt>layout</dt>
|
<dt>layout</dt>
|
||||||
<dd>Legt fest, ob ein Layouttemplate verwendet werden soll oder nicht
|
<dd>Legt fest, ob ein Layouttemplate verwendet werden soll oder nicht
|
||||||
(<tt>true</tt> oder<tt>false</tt>). Ist es ein Symbol, dass legt es fest,
|
(<tt>true</tt> oder<tt>false</tt>). Ist es ein Symbol, dann legt es fest,
|
||||||
welches Template als Layout verwendet wird. Beispiel:
|
welches Template als Layout verwendet wird:
|
||||||
<tt><tt>erb :index, :layout => !request.xhr?</tt></tt></dd>
|
|
||||||
|
<tt>erb :index, :layout => !request.xhr?</tt></dd>
|
||||||
|
|
||||||
<dt>content_type</dt>
|
<dt>content_type</dt>
|
||||||
<dd>Content-Type den das Template ausgibt. Voreinstellung hängt von der
|
<dd>Content-Type den das Template ausgibt. Voreinstellung hängt von der
|
||||||
|
@ -380,10 +391,14 @@ Einstellungen:
|
||||||
<dt>layout_engine</dt>
|
<dt>layout_engine</dt>
|
||||||
<dd>Legt fest, welcher Renderer für das Layout verantwortlich ist. Hilfreich
|
<dd>Legt fest, welcher Renderer für das Layout verantwortlich ist. Hilfreich
|
||||||
für Sprachen, die sonst keine Templates unterstützen. Voreingestellt auf
|
für Sprachen, die sonst keine Templates unterstützen. Voreingestellt auf
|
||||||
den Renderer, der für das Template verwendet wird. Beispiel:
|
den Renderer, der für das Template verwendet wird:
|
||||||
<tt>set :rdoc, :layout_engine => :erb</tt></dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
|
<tt>set :rdoc, :layout_engine => :erb</tt></dd>
|
||||||
|
<dt>layout_options</dt>
|
||||||
|
<dd>Besondere Einstellungen, die nur für das Rendering verwendet werden:
|
||||||
|
|
||||||
|
<tt>set :rdoc, :layout_options => { :views => 'views/layouts' }</tt></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
Sinatra geht davon aus, dass die Templates sich im `./views` Verzeichnis
|
Sinatra geht davon aus, dass die Templates sich im `./views` Verzeichnis
|
||||||
befinden. Es kann jedoch ein anderer Ordner festgelegt werden:
|
befinden. Es kann jedoch ein anderer Ordner festgelegt werden:
|
||||||
|
@ -401,11 +416,21 @@ auch dann, wenn sie sich in einem Unterordner befinden:
|
||||||
|
|
||||||
Rendering-Methoden rendern jeden String direkt.
|
Rendering-Methoden rendern jeden String direkt.
|
||||||
|
|
||||||
|
#### Direkte Templates
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
get '/' do
|
||||||
|
haml '%div.title Hallo Welt'
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Hier wird der String direkt gerendert.
|
||||||
|
|
||||||
### Verfügbare Templatesprachen
|
### Verfügbare Templatesprachen
|
||||||
|
|
||||||
Einige Sprachen haben mehrere Implementierungen. Um festzulegen, welche
|
Einige Sprachen haben mehrere Implementierungen. Um festzulegen, welche
|
||||||
verwendet wird (und dann auch Thread-sicher ist), verwendet man am besten zu
|
verwendet wird (und dann auch Thread-sicher ist), verwendet man am besten zu
|
||||||
Beginn ein 'require':
|
Beginn ein `'require'`:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
require 'rdiscount' # oder require 'bluecloth'
|
require 'rdiscount' # oder require 'bluecloth'
|
||||||
|
@ -809,6 +834,82 @@ verwendet wird.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
#### Stylus Templates
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>Abhängigkeit</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/lucasmazza/ruby-stylus" title="Ruby Stylus">
|
||||||
|
Stylus
|
||||||
|
</a> und eine Möglichkeit
|
||||||
|
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||||
|
JavaScript auszuführen
|
||||||
|
</a>.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Dateierweiterung</td>
|
||||||
|
<td><tt>.styl</tt></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Beispiel</td>
|
||||||
|
<td><tt>stylus :index</tt></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Um Stylus-Templates ausführen zu können, müssen `stylus` und `stylus/tilt`
|
||||||
|
zuerst geladen werden:
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
require 'sinatra'
|
||||||
|
require 'stylus'
|
||||||
|
require 'stylus/tilt'
|
||||||
|
|
||||||
|
get '/' do
|
||||||
|
stylus :example
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Yajl Templates
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>Abhängigkeit</td>
|
||||||
|
<td><a href="https://github.com/brianmario/yajl-ruby" title="yajl-ruby">yajl-ruby</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Dateierweiterung</td>
|
||||||
|
<td><tt>.yajl</tt></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Beispiel</td>
|
||||||
|
<td>
|
||||||
|
<tt>
|
||||||
|
yajl :index,
|
||||||
|
:locals => { :key => 'qux' },
|
||||||
|
:callback => 'present',
|
||||||
|
:variable => 'resource'
|
||||||
|
</tt>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Die Template-Quelle wird als Ruby-String evaluiert. Die daraus resultierende
|
||||||
|
json Variable wird mit Hilfe von `#to_json` umgewandelt:
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
json = { :foo => 'bar' }
|
||||||
|
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);
|
||||||
|
```
|
||||||
|
|
||||||
### WLang Templates
|
### WLang Templates
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
|
@ -830,14 +931,6 @@ Ruby-Methoden in wlang aufzurufen entspricht nicht den idiomatischen Vorgaben
|
||||||
von wlang, es bietet sich deshalb an, `:locals` zu verwenden. Layouts, die
|
von wlang, es bietet sich deshalb an, `:locals` zu verwenden. Layouts, die
|
||||||
wlang und `yield` verwenden, werden aber trotzdem unterstützt.
|
wlang und `yield` verwenden, werden aber trotzdem unterstützt.
|
||||||
|
|
||||||
### Eingebettete Templates
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
get '/' do
|
|
||||||
haml '%div.title Hallo Welt'
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Rendert den eingebetteten Template-String.
|
Rendert den eingebetteten Template-String.
|
||||||
|
|
||||||
### Auf Variablen in Templates zugreifen
|
### Auf Variablen in Templates zugreifen
|
||||||
|
@ -864,6 +957,44 @@ Oder durch einen expliziten Hash von lokalen Variablen:
|
||||||
Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
|
Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
|
||||||
Templates eingesetzt.
|
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
|
||||||
|
verwendet werden oder mit einem Block gerendert werden:
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
erb :post, :layout => false do
|
||||||
|
erb :index
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Dieser Code entspricht weitestgehend `erb :index, :layout => :post`.
|
||||||
|
|
||||||
|
Blöcke an Render-Methoden weiterzugeben ist besonders bei verschachtelten
|
||||||
|
Layouts hilfreich:
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
erb :main_layout, :layout => false do
|
||||||
|
erb :admin_layout do
|
||||||
|
erb :user
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Der gleiche Effekt kann auch mit weniger Code erreicht werden:
|
||||||
|
|
||||||
|
``` ruby
|
||||||
|
erb :admin_layout, :layout => :main_layout do
|
||||||
|
erb :user
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Zur Zeit nehmen folgende Renderer Blöcke an: `erb`, `haml`, `liquid`, `slim `
|
||||||
|
und `wlang`.
|
||||||
|
|
||||||
|
Das gleich gilt auch für die allgemeine `render` Methode.
|
||||||
|
|
||||||
### Inline-Templates
|
### Inline-Templates
|
||||||
|
|
||||||
Templates können auch am Ende der Datei definiert werden:
|
Templates können auch am Ende der Datei definiert werden:
|
||||||
|
@ -1233,18 +1364,34 @@ Serven wie Thin oder Rainbows möglich, andere Server werden trotzdem den Stream
|
||||||
beenden:
|
beenden:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
|
# Durchgehende Anfrage (long polling)
|
||||||
|
|
||||||
set :server, :thin
|
set :server, :thin
|
||||||
connections = []
|
connections = []
|
||||||
|
|
||||||
get '/' do
|
get '/subscribe' do
|
||||||
# Den Stream offen halten
|
# Client-Registrierung beim Server, damit Events mitgeteilt werden können
|
||||||
stream(:keep_open) { |out| connections << out }
|
stream(:keep_open) { |out| connections << out }
|
||||||
|
|
||||||
|
# tote Verbindungen entfernen
|
||||||
|
connections.reject!(&:closed?)
|
||||||
|
|
||||||
|
# Rückmeldung
|
||||||
|
"Angemeldet"
|
||||||
end
|
end
|
||||||
|
|
||||||
post '/' do
|
post '/message' do
|
||||||
# In alle offenen Streams schreiben
|
connections.each do |out|
|
||||||
connections.each { |out| out << params[:message] << "\n" }
|
# Den Client über eine neue Nachricht in Kenntnis setzen
|
||||||
"Nachricht verschickt"
|
# notify client that a new message has arrived
|
||||||
|
out << params[:message] << "\n"
|
||||||
|
|
||||||
|
# Den Client zur erneuten Verbindung auffordern
|
||||||
|
out.close
|
||||||
|
end
|
||||||
|
|
||||||
|
# Rückmeldung
|
||||||
|
"Mitteiling erhalten"
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1531,7 +1678,7 @@ zugegriffen werden:
|
||||||
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["IRGENDEIN_HEADER"] # Wert von IRGENDEIN_HEADER header
|
request["irgendein_param"] # Wert von einem Parameter; [] ist die Kurzform für den params Hash
|
||||||
request.referrer # Der Referrer des Clients oder '/'
|
request.referrer # Der Referrer des Clients oder '/'
|
||||||
request.user_agent # User-Agent (verwendet in der :agent Bedingung)
|
request.user_agent # User-Agent (verwendet in der :agent Bedingung)
|
||||||
request.cookies # Hash des Browser-Cookies
|
request.cookies # Hash des Browser-Cookies
|
||||||
|
@ -1754,7 +1901,7 @@ Schutzmechanismen zu deaktivieren:
|
||||||
```ruby
|
```ruby
|
||||||
set :protection, :except => [:path_traversal, :session_hijacking]
|
set :protection, :except => [:path_traversal, :session_hijacking]
|
||||||
```
|
```
|
||||||
## Möglichee Einstellungen
|
## Mögliche Einstellungen
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
<dt>absolute_redirects</dt>
|
<dt>absolute_redirects</dt>
|
||||||
|
@ -1767,10 +1914,9 @@ Schutzmechanismen zu deaktivieren:
|
||||||
Standardmäßig nicht aktiviert.</dd>
|
Standardmäßig nicht aktiviert.</dd>
|
||||||
|
|
||||||
<dt>add_charsets</dt>
|
<dt>add_charsets</dt>
|
||||||
<dd>
|
<dd>Mime-Types werden hier automatisch der Helfer-Methode
|
||||||
Mime-Types werden hier automatisch der Helfer-Methode <tt>content_type</tt>
|
<tt>content_type</tt> zugeordnet. Es empfielt sich, Werte hinzuzufügen statt
|
||||||
zugeordnet. Es empfielt sich, Werte hinzuzufügen statt sie zu
|
sie zu überschreiben: <tt>settings.add_charsets << "application/foobar"</tt>
|
||||||
überschreiben: <tt>settings.add_charsets << "application/foobar"</tt>
|
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt>app_file</dt>
|
<dt>app_file</dt>
|
||||||
|
@ -1778,8 +1924,8 @@ Schutzmechanismen zu deaktivieren:
|
||||||
Inline-, View- und öffentliche Verzeichnis des Projekts festzustellen.</dd>
|
Inline-, View- und öffentliche Verzeichnis des Projekts festzustellen.</dd>
|
||||||
|
|
||||||
<dt>bind</dt>
|
<dt>bind</dt>
|
||||||
<dd>IP-Address, an die gebunden wird (Standardwert: 0.0.0.0). Wird nur für
|
<dd>IP-Address, an die gebunden wird (Standardwert: <tt>0.0.0.0</tt>). Wird
|
||||||
den eingebauten Server verwendet.</dd>
|
nur für den eingebauten Server verwendet.</dd>
|
||||||
|
|
||||||
<dt>default_encoding</dt>
|
<dt>default_encoding</dt>
|
||||||
<dd>Das Encoding, falls keines angegeben wurde. Standardwert ist
|
<dd>Das Encoding, falls keines angegeben wurde. Standardwert ist
|
||||||
|
@ -1848,9 +1994,8 @@ Schutzmechanismen zu deaktivieren:
|
||||||
|
|
||||||
<dt>server</dt>
|
<dt>server</dt>
|
||||||
<dd>Server oder Liste von Servern, die als eingebaute Server zur Verfügung
|
<dd>Server oder Liste von Servern, die als eingebaute Server zur Verfügung
|
||||||
stehen. Standardmäßig auf [‘thin’, ‘mongrel’, ‘webrick’] voreingestellt. Die
|
stehen. Standardmäßig auf <tt>[‘thin’, ‘mongrel’, ‘webrick’]</tt>
|
||||||
Anordnung gibt die Priorität
|
voreingestellt. Die Anordnung gibt die Priorität vor.</dd>
|
||||||
vor.</dd>
|
|
||||||
|
|
||||||
<dt>sessions</dt>
|
<dt>sessions</dt>
|
||||||
<dd>Sessions auf Cookiebasis mittels
|
<dd>Sessions auf Cookiebasis mittels
|
||||||
|
@ -1878,9 +2023,17 @@ Schutzmechanismen zu deaktivieren:
|
||||||
mehrere Werte gleichzeitig zu übergeben: <tt>set :static_cache_control,
|
mehrere Werte gleichzeitig zu übergeben: <tt>set :static_cache_control,
|
||||||
[:public, :max_age => 300]</tt></dd>
|
[:public, :max_age => 300]</tt></dd>
|
||||||
|
|
||||||
|
<dt>threaded</dt>
|
||||||
|
<dd>Wird es auf <tt>true</tt> gesetzt, wird Thin aufgefordert
|
||||||
|
<tt>EventMachine.defer</tt> zur Verarbeitung des Requests einzusetzen.</dd>
|
||||||
|
|
||||||
<dt>views</dt>
|
<dt>views</dt>
|
||||||
<dd>Verzeichnis der Views. Leitet sich von der <tt>app_file</tt> Einstellung
|
<dd>Verzeichnis der Views. Leitet sich von der <tt>app_file</tt> Einstellung
|
||||||
ab, wenn nicht gesetzt.</dd>
|
ab, wenn nicht gesetzt.</dd>
|
||||||
|
|
||||||
|
<dt>x_cascade</dt>
|
||||||
|
<dd>Einstellung, ob der X-Cascade Header bei fehlender Route gesetzt wird oder
|
||||||
|
nicht. Standardeinstellung ist <tt>true</tt>.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
## Umgebungen
|
## Umgebungen
|
||||||
|
@ -1973,7 +2126,8 @@ Oder ein Status-Code-Bereich:
|
||||||
```
|
```
|
||||||
|
|
||||||
Sinatra setzt verschiedene `not_found`- und `error`-Handler in der
|
Sinatra setzt verschiedene `not_found`- und `error`-Handler in der
|
||||||
Development-Umgebung.
|
Development-Umgebung ein, um hilfreiche Debugging Informationen und Stack Traces
|
||||||
|
anzuzeigen.
|
||||||
|
|
||||||
## Rack-Middleware
|
## Rack-Middleware
|
||||||
|
|
||||||
|
@ -2055,7 +2209,10 @@ wird empfohlen:
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
## Sinatra::Base - Middleware, Bibliotheken und modulare Anwendungen
|
Hinweis: Wird Sinatra modular verwendet, muss <tt>Sinatra::Application</tt> mit
|
||||||
|
dem Namen der Applikations-Klasse ersetzt werden.
|
||||||
|
|
||||||
|
[[##]] Sinatra::Base - Middleware, Bibliotheken und modulare Anwendungen
|
||||||
|
|
||||||
Das Definieren einer Top-Level-Anwendung funktioniert gut für
|
Das Definieren einer Top-Level-Anwendung funktioniert gut für
|
||||||
Mikro-Anwendungen, hat aber Nachteile, wenn wiederverwendbare Komponenten wie
|
Mikro-Anwendungen, hat aber Nachteile, wenn wiederverwendbare Komponenten wie
|
||||||
|
@ -2120,16 +2277,49 @@ miteinander zu vermischen.
|
||||||
Bei einem Umstieg, sollten einige Unterschiede in den Einstellungen beachtet
|
Bei einem Umstieg, sollten einige Unterschiede in den Einstellungen beachtet
|
||||||
werden:
|
werden:
|
||||||
|
|
||||||
```
|
<table>
|
||||||
Szenario Classic Modular
|
<tr>
|
||||||
---------------------------------------------------
|
<th>Szenario</th>
|
||||||
|
<th>Classic</th>
|
||||||
|
<th>Modular</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
app_file sinatra ladende Datei Sinatra::Base subklassierende Datei
|
<tr>
|
||||||
run $0 == app_file false
|
<td>app_file</td>
|
||||||
logging true false
|
<td>Sinatra ladende Datei</td>
|
||||||
method_override true false
|
<td>Sinatra::Base subklassierende Datei</td>
|
||||||
inline_templates true false
|
</tr>
|
||||||
```
|
|
||||||
|
<tr>
|
||||||
|
<td>run</td>
|
||||||
|
<td>$0 == app_file</td>
|
||||||
|
<td>false</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>logging</td>
|
||||||
|
<td>true</td>
|
||||||
|
<td>false</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>method_override</td>
|
||||||
|
<td>true</td>
|
||||||
|
<td>false</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>inline_templates</td>
|
||||||
|
<td>true</td>
|
||||||
|
<td>false</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>static</td>
|
||||||
|
<td>true</td>
|
||||||
|
<td>false</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
### Eine modulare Applikation bereitstellen
|
### Eine modulare Applikation bereitstellen
|
||||||
|
|
||||||
|
@ -2158,7 +2348,7 @@ Oder über eine `config.ru`-Datei, die es erlaubt, einen beliebigen
|
||||||
Rack-Handler zu verwenden:
|
Rack-Handler zu verwenden:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
# config.ru
|
# config.ru (mit rackup starten)
|
||||||
require './mein_app'
|
require './mein_app'
|
||||||
run MeineApp
|
run MeineApp
|
||||||
```
|
```
|
||||||
|
@ -2445,7 +2635,7 @@ Die folgenden Versionen werden offiziell unterstützt:
|
||||||
Einsatz kommt – die Thin und Mongrel Web-Server werden bisher nicht
|
Einsatz kommt – die Thin und Mongrel Web-Server werden bisher nicht
|
||||||
unterstütz. JRubys Unterstützung für C-Erweiterungen sind zur Zeit ebenfalls
|
unterstütz. JRubys Unterstützung für C-Erweiterungen sind zur Zeit ebenfalls
|
||||||
experimenteller Natur, betrifft im Moment aber nur die RDiscount, Redcarpet,
|
experimenteller Natur, betrifft im Moment aber nur die RDiscount, Redcarpet,
|
||||||
RedCloth und Yajl Templates.</dd>
|
RedCloth und [[Yajl]] Templates.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
Weiterhin werden wir die kommende Ruby-Versionen im Auge behalten.
|
Weiterhin werden wir die kommende Ruby-Versionen im Auge behalten.
|
||||||
|
|
34
README.md
34
README.md
|
@ -484,22 +484,17 @@ Available Options:
|
||||||
Special options only used for rendering the layout. Example:
|
Special options only used for rendering the layout. Example:
|
||||||
<tt>set :rdoc, :layout_options => { :views => 'views/layouts' }</tt>
|
<tt>set :rdoc, :layout_options => { :views => 'views/layouts' }</tt>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dd>
|
|
||||||
Templates are assumed to be located directly under the `./views`
|
|
||||||
directory. To use a different views directory:
|
|
||||||
<tt>set :views, settings.root + '/templates'</tt>
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dd>
|
|
||||||
One important thing to remember is that you always have to reference
|
|
||||||
templates with symbols, even if they're in a subdirectory (in this
|
|
||||||
case, use: <tt>'subdir/template'</tt>). You must use a symbol because
|
|
||||||
otherwise rendering methods will render any strings passed to them
|
|
||||||
directly.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
Templates are assumed to be located directly under the `./views` directory. To
|
||||||
|
use a different views directory:
|
||||||
|
<tt>set :views, settings.root + '/templates'</tt>
|
||||||
|
|
||||||
|
One important thing to remember is that you always have to reference templates
|
||||||
|
with symbols, even if they're in a subdirectory (in this case, use:
|
||||||
|
<tt>'subdir/template'</tt>). You must use a symbol because otherwise rendering
|
||||||
|
methods will render any strings passed to them directly.
|
||||||
|
|
||||||
#### Literal Templates
|
#### Literal Templates
|
||||||
|
|
||||||
``` ruby
|
``` ruby
|
||||||
|
@ -977,14 +972,15 @@ end
|
||||||
|
|
||||||
|
|
||||||
The template source is evaluated as a Ruby string, and the
|
The template source is evaluated as a Ruby string, and the
|
||||||
resulting json variable is converted using `#to_json`.
|
resulting json variable is converted using `#to_json`:
|
||||||
|
|
||||||
``` ruby
|
``` ruby
|
||||||
json = { :foo => 'bar' }
|
json = { :foo => 'bar' }
|
||||||
json[:baz] = key
|
json[:baz] = key
|
||||||
```
|
```
|
||||||
|
|
||||||
The `:callback` and `:variable` options can be used to decorate the rendered object.
|
The `:callback` and `:variable` options can be used to decorate the rendered
|
||||||
|
object:
|
||||||
|
|
||||||
``` ruby
|
``` ruby
|
||||||
var resource = {"foo":"bar","baz":"qux"}; present(resource);
|
var resource = {"foo":"bar","baz":"qux"}; present(resource);
|
||||||
|
@ -2013,7 +2009,7 @@ set :protection, :session => true
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt>bind</dt>
|
<dt>bind</dt>
|
||||||
<dd>IP address to bind to (default: 0.0.0.0). Only used for built-in server.</dd>
|
<dd>IP address to bind to (default: <tt>0.0.0.0</tt>). Only used for built-in server.</dd>
|
||||||
|
|
||||||
<dt>default_encoding</dt>
|
<dt>default_encoding</dt>
|
||||||
<dd>encoding to assume if unknown (defaults to <tt>"utf-8"</tt>).</dd>
|
<dd>encoding to assume if unknown (defaults to <tt>"utf-8"</tt>).</dd>
|
||||||
|
@ -2094,7 +2090,7 @@ set :protection, :session => true
|
||||||
<dt>server</dt>
|
<dt>server</dt>
|
||||||
<dd>
|
<dd>
|
||||||
server or list of servers to use for built-in server. defaults to
|
server or list of servers to use for built-in server. defaults to
|
||||||
['thin', 'mongrel', 'webrick'], order indicates priority.
|
<tt>['thin', 'mongrel', 'webrick']</tt>, order indicates priority.
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt>sessions</dt>
|
<dt>sessions</dt>
|
||||||
|
@ -2150,7 +2146,7 @@ set :protection, :session => true
|
||||||
<dt>x_cascade</dt>
|
<dt>x_cascade</dt>
|
||||||
<dd>
|
<dd>
|
||||||
Whether or not to set the X-Cascade header if no route matches.
|
Whether or not to set the X-Cascade header if no route matches.
|
||||||
Defaults to `true`.
|
Defaults to <tt>true</tt>.
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue