Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 2116 lines (1525 sloc) 66.385 kb
11e1f8a Add German translation of the README
Bernhard Essl authored
1 = Sinatra
7949da7 @burningTyger German readme update and fixes
burningTyger authored
2
d59a98c @rkh remove trailing whitespaces
rkh authored
3 <i>Wichtig: Dieses Dokument ist eine Übersetzung aus dem Englischen und unter
8129ee4 corrected and improved the german README
tbuehlmann authored
4 Umständen nicht auf dem aktuellen Stand.</i>
11e1f8a Add German translation of the README
Bernhard Essl authored
5
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
6 Sinatra ist eine DSL, die das schnelle Erstellen von Webanwendungen in Ruby
8129ee4 corrected and improved the german README
tbuehlmann authored
7 mit minimalem Aufwand ermöglicht:
11e1f8a Add German translation of the README
Bernhard Essl authored
8
9 # myapp.rb
10 require 'sinatra'
11 get '/' do
12 'Hallo Welt!'
13 end
14
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
15 Einfach via +rubygems+ installieren und starten:
11e1f8a Add German translation of the README
Bernhard Essl authored
16
8465d49 @rkh Avoid `require "rubygems"` and `sudo` in README.
rkh authored
17 gem install sinatra
18 ruby -rubygems myapp.rb
11e1f8a Add German translation of the README
Bernhard Essl authored
19
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
20 Die Seite kann nun unter http://localhost:4567 betrachtet werden.
11e1f8a Add German translation of the README
Bernhard Essl authored
21
f265aab @burningTyger updated German README
burningTyger authored
22 Es wird empfohlen, den Thin-Server via <tt>gem install thin</tt> zu
7949da7 @burningTyger German readme update and fixes
burningTyger authored
23 installieren, den Sinatra dann, soweit vorhanden, automatisch verwendet.
24
11e1f8a Add German translation of the README
Bernhard Essl authored
25 == Routen
26
d59a98c @rkh remove trailing whitespaces
rkh authored
27 In Sinatra wird eine Route durch eine HTTP-Methode und ein URL-Muster
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
28 definiert. Jeder dieser Routen wird ein Ruby-Block zugeordnet:
11e1f8a Add German translation of the README
Bernhard Essl authored
29
30 get '/' do
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
31 .. zeige etwas ..
11e1f8a Add German translation of the README
Bernhard Essl authored
32 end
33
34 post '/' do
35 .. erstelle etwas ..
36 end
37
38 put '/' do
39 .. update etwas ..
40 end
41
42 delete '/' do
43 .. entferne etwas ..
44 end
f265aab @burningTyger updated German README
burningTyger authored
45
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
46 options '/' do
c8ce7cd @burningTyger updated the German docs
burningTyger authored
47 .. zeige, was wir können ..
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
48 end
11e1f8a Add German translation of the README
Bernhard Essl authored
49
f979cb8 @rkh typo + grammar in German README
rkh authored
50 Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden.
8129ee4 corrected and improved the german README
tbuehlmann authored
51 Das erste Routen-Muster, das mit dem Request übereinstimmt, wird ausgeführt.
11e1f8a Add German translation of the README
Bernhard Essl authored
52
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
53 Die Muster der Routen können benannte Parameter beinhalten, die über den
f979cb8 @rkh typo + grammar in German README
rkh authored
54 <tt>params</tt>-Hash zugänglich gemacht werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
55
56 get '/hallo/:name' do
57 # passt auf "GET /hallo/foo" und "GET /hallo/bar"
58 # params[:name] ist 'foo' oder 'bar'
59 "Hallo #{params[:name]}!"
60 end
61
8129ee4 corrected and improved the german README
tbuehlmann authored
62 Man kann auf diese auch mit Block-Parametern zugreifen:
11e1f8a Add German translation of the README
Bernhard Essl authored
63
64 get '/hallo/:name' do |n|
65 "Hallo #{n}!"
66 end
67
8129ee4 corrected and improved the german README
tbuehlmann authored
68 Routen-Muster können auch mit Splat- oder Wildcard-Parametern über das
69 <tt>params[:splat]</tt>-Array angesprochen werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
70
71 get '/sag/*/zu/*' do
72 # passt auf /sag/hallo/zu/welt
73 params[:splat] # => ["hallo", "welt"]
74 end
75
76 get '/download/*.*' do
77 # passt auf /download/pfad/zu/datei.xml
78 params[:splat] # => ["pfad/zu/datei", "xml"]
79 end
80
c8ce7cd @burningTyger updated the German docs
burningTyger authored
81 Oder mit Block-Parametern:
82
83 get '/download/*.*' do |pfad, endung|
84 [pfad, endung] # => ["Pfad/zu/Datei", "xml"]
85 end
f265aab @burningTyger updated German README
burningTyger authored
86
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
87 Routen mit regulären Ausdrücken sind auch möglich:
11e1f8a Add German translation of the README
Bernhard Essl authored
88
89 get %r{/hallo/([\w]+)} do
90 "Hallo, #{params[:captures].first}!"
91 end
92
8129ee4 corrected and improved the german README
tbuehlmann authored
93 Und auch hier können Block-Parameter genutzt werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
94
95 get %r{/hallo/([\w]+)} do |c|
96 "Hallo, #{c}!"
97 end
98
3af1fb3 @burningTyger update German Readme
burningTyger authored
99 Routen-Muster können auch mit optionalen Parametern ausgestattet werden:
100
101 get '/posts.?:format?' do
f265aab @burningTyger updated German README
burningTyger authored
102 # passt auf "GET /posts" sowie jegliche Erweiterung
3af1fb3 @burningTyger update German Readme
burningTyger authored
103 # wie "GET /posts.json", "GET /posts.xml" etc.
104 end
105
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
106 Anmerkung: Solange man den sog. Path Traversal Attack-Schutz nicht deaktiviert
107 (siehe weiter unten), kann es sein, dass der Request-Pfad noch vor dem Abgleich
108 mit den Routen modifiziert wird.
109
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
110 === Bedingungen
111
112 An Routen können eine Vielzahl von Bedingungen angehängt werden, die erfüllt
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
113 sein müssen, damit der Block ausgeführt wird. Möglich wäre etwa eine
8129ee4 corrected and improved the german README
tbuehlmann authored
114 Einschränkung des User-Agents:
11e1f8a Add German translation of the README
Bernhard Essl authored
115
116 get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
117 "Du verwendest Songbird Version #{params[:agent][0]}"
11e1f8a Add German translation of the README
Bernhard Essl authored
118 end
119
120 get '/foo' do
121 # passt auf andere Browser
122 end
123
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
124 Andere mitgelieferte Bedingungen sind +host_name+ und +provides+:
125
126 get '/', :host_name => /^admin\./ do
127 "Adminbereich, Zugriff verweigert!"
128 end
129
130 get '/', :provides => 'html' do
131 haml :index
132 end
133
134 get '/', :provides => ['rss', 'atom', 'xml'] do
135 builder :feed
136 end
137
8129ee4 corrected and improved the german README
tbuehlmann authored
138 Es können auch andere Bedingungen relativ einfach hinzugefügt werden:
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
139
140 set(:probability) { |value| condition { rand <= value } }
141
142 get '/auto_gewinnen', :probability => 0.1 do
143 "Du hast gewonnen!"
144 end
145
146 get '/auto_gewinnen' do
147 "Tut mir leid, verloren."
148 end
149
f265aab @burningTyger updated German README
burningTyger authored
150 Bei Bedingungen, die mehrere Werte annehmen können, sollte ein Splat verwendet
3af1fb3 @burningTyger update German Readme
burningTyger authored
151 werden:
152
153 set(:auth) do |*roles| # <- hier kommt der Splat ins Spiel
154 condition do
155 unless logged_in? && roles.any? {|role| current_user.in_role? role }
f265aab @burningTyger updated German README
burningTyger authored
156 redirect "/login/", 303
3af1fb3 @burningTyger update German Readme
burningTyger authored
157 end
158 end
159 end
160
161 get "/mein/account/", :auth => [:user, :admin] do
162 "Mein Account"
163 end
f265aab @burningTyger updated German README
burningTyger authored
164
3af1fb3 @burningTyger update German Readme
burningTyger authored
165 get "/nur/admin/", :auth => :admin do
166 "Nur Admins dürfen hier rein!"
167 end
168
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
169 === Rückgabewerte
170
8129ee4 corrected and improved the german README
tbuehlmann authored
171 Durch den Rückgabewert eines Routen-Blocks wird mindestens der Response-Body
7949da7 @burningTyger German readme update and fixes
burningTyger authored
172 festgelegt, der an den HTTP-Client, bzw. die nächste Rack-Middleware,
f265aab @burningTyger updated German README
burningTyger authored
173 weitergegeben wird. Im Normalfall handelt es sich hierbei, wie in den
174 vorangehenden Beispielen zu sehen war, um einen String. Es werden allerdings
7949da7 @burningTyger German readme update and fixes
burningTyger authored
175 auch andere Werte akzeptiert.
176
177 Es kann jedes gültige Objekt zurückgegeben werden, bei dem es sich entweder um
178 einen Rack-Rückgabewert, einen Rack-Body oder einen HTTP-Status-Code handelt:
179
f265aab @burningTyger updated German README
burningTyger authored
180 * Ein Array mit drei Elementen: <tt>[Status (Fixnum), Headers (Hash),
7949da7 @burningTyger German readme update and fixes
burningTyger authored
181 Response-Body (antwortet auf #each)]</tt>.
182 * Ein Array mit zwei Elementen: <tt>[Status (Fixnum), Response-Body (antwortet
183 auf #each)]</tt>.
f265aab @burningTyger updated German README
burningTyger authored
184 * Ein Objekt, das auf <tt>#each</tt> antwortet und den an diese Methode
7949da7 @burningTyger German readme update and fixes
burningTyger authored
185 übergebenen Block nur mit Strings als Übergabewerte aufruft.
8129ee4 corrected and improved the german README
tbuehlmann authored
186 * Ein Fixnum, das den Status-Code festlegt.
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
187
188 Damit lässt sich relativ einfach Streaming implementieren:
189
190 class Stream
191 def each
192 100.times { |i| yield "#{i}\n" }
193 end
194 end
195
196 get('/') { Stream.new }
197
3af1fb3 @burningTyger update German Readme
burningTyger authored
198 Ebenso kann die +stream+-Helfer-Methode (s.u.) verwendet werden, die Streaming
199 direkt in die Route integriert.
200
f265aab @burningTyger updated German README
burningTyger authored
201 === Eigene Routen-Muster
7949da7 @burningTyger German readme update and fixes
burningTyger authored
202
f265aab @burningTyger updated German README
burningTyger authored
203 Wie oben schon beschrieben, ist Sinatra von Haus aus mit Unterstützung für
8129ee4 corrected and improved the german README
tbuehlmann authored
204 String-Muster und Reguläre Ausdrücke zum Abgleichen von Routen ausgestattet.
205 Das muss aber noch nicht alles sein, es können ohne großen Aufwand eigene
206 Routen-Muster erstellt werden:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
207
208 class AllButPattern
209 Match = Struct.new(:captures)
210
211 def initialize(except)
212 @except = except
213 @captures = Match.new([])
214 end
215
216 def match(str)
217 @captures unless @except === str
218 end
219 end
220
221 def all_but(pattern)
222 AllButPattern.new(pattern)
223 end
224
225 get all_but("/index") do
226 # ...
227 end
228
f265aab @burningTyger updated German README
burningTyger authored
229 Beachte, dass das obige Beispiel etwas übertrieben wirkt. Es geht auch
7949da7 @burningTyger German readme update and fixes
burningTyger authored
230 einfacher:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
231
232 get // do
233 pass if request.path_info == "/index"
234 # ...
235 end
236
237 Oder unter Verwendung eines negativen look ahead:
238
239 get %r{^(?!/index$)} do
240 # ...
241 end
242
11e1f8a Add German translation of the README
Bernhard Essl authored
243 == Statische Dateien
244
8129ee4 corrected and improved the german README
tbuehlmann authored
245 Statische Dateien werden aus dem <tt>./public</tt>-Ordner ausgeliefert. Es ist
d1ab58d @rkh rename public to public_folder, fixes #301
rkh authored
246 möglich, einen anderen Ort zu definieren, indem man die
247 <tt>:public_folder</tt>-Option setzt:
11e1f8a Add German translation of the README
Bernhard Essl authored
248
d1ab58d @rkh rename public to public_folder, fixes #301
rkh authored
249 set :public_folder, File.dirname(__FILE__) + '/static'
11e1f8a Add German translation of the README
Bernhard Essl authored
250
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
251 Zu beachten ist, dass der Ordnername public nicht Teil der URL ist. Die Datei
252 <tt>./public/css/style.css</tt> ist unter
253 <tt>http://example.com/css/style.css</tt> zu finden.
11e1f8a Add German translation of the README
Bernhard Essl authored
254
604e747 @burningTyger update German README
burningTyger authored
255 Um den <tt>Cache-Control</tt>-Header mit Informationen zu versorgen, verwendet
256 man die <tt>:static_cache_control</tt>-Einstellung (s.u.).
257
8129ee4 corrected and improved the german README
tbuehlmann authored
258 == Views/Templates
11e1f8a Add German translation of the README
Bernhard Essl authored
259
f265aab @burningTyger updated German README
burningTyger authored
260 Alle Templatesprachen verwenden ihre eigene Renderingmethode, die jeweils
261 einen String zurückgibt:
262
263 get '/' do
264 erb :index
265 end
266
267 Dieses Beispiel rendert <tt>views/index.erb</tt>.
268
269 Anstelle eines Templatenamens kann man auch direkt die Templatesprache
270 verwenden:
271
272 get '/' do
273 code = "<%= Time.now %>"
274 erb code
275 end
276
277 Templates nehmen ein zweite Argument an, den Options-Hash:
278
279 get '/' do
280 erb :index, :layout => :post
281 end
282
283 Dieses Beispiel rendert <tt>views/index.erb</tt> eingebettet in
284 <tt>views/post.erb</tt> (Voreinstellung ist <tt>views/layout.erb</tt>, sofern
285 es vorhanden ist.)
286
287 Optionen, die Sinatra nicht versteht, werden an das Template weitergereicht:
288
289 get '/' do
290 haml :index, :format => :html5
291 end
292
293 Für alle Templates können auch generelle Einstellungen festgelegt werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
294
f265aab @burningTyger updated German README
burningTyger authored
295 set :haml, :format => :html5
11e1f8a Add German translation of the README
Bernhard Essl authored
296
f265aab @burningTyger updated German README
burningTyger authored
297 get '/' do
298 haml :index
299 end
300
301 Optionen, die an die Rendermethode weitergegeben werden, überschreiben die
302 Einstellungen, die mit +set+ festgelegt wurden.
303
304 Mögliche Einstellungen:
305
306 [locals]
307 Liste von lokalen Variablen, die and das Dokument weitergegeben werden.
308 Praktisch für Partials.
309 Beispiel: <tt>erb "<%= foo %>", :locals => {:foo => "bar"}</tt>
310
311 [default_encoding]
312 Gibt die Stringkodierung an, die verwendet werden soll. Voreingestellt auf
313 <tt>settings.default_encoding</tt>.
314
315 [views]
316 Ordner, aus dem die Templates heraus geladen werden. Voreingestellt auf
317 <tt>settings.views</tt>.
318
319 [layout]
320 Legt fest, ob ein Layouttemplate verwendet werden soll oder nicht (+true+
321 oder +false+). Ist es ein Symbol, dass legt es fest, welches Template als
322 Layout verwendet wird. Beispiel:
323 <tt>erb :index, :layout => !request.xhr?</tt>
324
325 [content_type]
326 Content-Type den das Template ausgibt. Voreinstellung hängt von der
327 Templatesprache ab.
328
329 [scope]
330 Scope, in dem das Template gerendert wird. Liegt standardmäßig innerhalb der
331 App-Instanz. Wird Scope geändert, sind Instanzvariablen und Helfermethoden
332 nicht verfügbar.
333
334 [layout_engine]
335 Legt fest, welcher Renderer für das Layout verantwortlich ist.
336 Hilfreich für Sprachen, die sonst keine Templates unterstützen.
337 Voreingestellt auf den Renderer, der für das Template verwendet wird.
338 Beispiel: <tt>set :rdoc, :layout_engine => :erb</tt>
339
340 Sinatra geht davon aus, dass die Templates sich im <tt>./views</tt> Verzeichnis
341 befinden. Es kann jedoch ein anderer Ordner festgelegt werden:
342
343 set :views, settings.root + '/templates'
344
345 Es ist zu beachten, dass immer mit Symbolen auf Templates verwiesen werden
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
346 muss, auch dann, wenn sie sich in einem Unterordner befinden:
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
347
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
348 haml :'unterverzeichnis/template'
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
349
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
350 Rendering-Methoden rendern jeden String direkt.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
351
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
352 === Verfügbare Templatesprachen
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
353
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
354 Einige Sprachen haben mehrere Implementierungen. Um festzulegen, welche
355 verwendet wird (und dann auch Thread-sicher ist), verwendet man am besten zu
356 Beginn ein 'require':
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
357
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
358 require 'rdiscount' # oder require 'bluecloth'
359 get('/') { markdown :index }
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
360
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
361 === Haml Templates
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
362
f095019 @mattwildig Update README links to Haml
mattwildig authored
363 Abhängigkeit:: {haml}[http://haml.info/]
1746084 @burningTyger update German README
burningTyger authored
364 Dateierweiterung:: <tt>.haml</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
365 Beispiel:: <tt>haml :index, :format => :html5</tt>
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
366
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
367 === Erb Templates
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
368
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
369 Abhängigkeit:: {erubis}[http://www.kuwata-lab.com/erubis/] oder
1746084 @burningTyger update German README
burningTyger authored
370 erb (included in Ruby)
371 Dateierweiterungen:: <tt>.erb</tt>, <tt>.rhtml</tt> oder <tt>.erubis</tt>
372 (nur Erubis)
373 Beispiel:: <tt>erb :index</tt>
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
374
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
375 === Builder Templates
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
376
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
377 Abhängigkeit:: {builder}[http://builder.rubyforge.org/]
1746084 @burningTyger update German README
burningTyger authored
378 Dateierweiterung:: <tt>.builder</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
379 Beispiel:: <tt>builder { |xml| xml.em "Hallo" }</tt>
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
380
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
381 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
382
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
383 === Nokogiri Templates
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
384
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
385 Abhängigkeit:: {nokogiri}[http://nokogiri.org/]
1746084 @burningTyger update German README
burningTyger authored
386 Dateierweiterung:: <tt>.nokogiri</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
387 Beispiel:: <tt>nokogiri { |xml| xml.em "Hallo" }</tt>
b464e02 @rkh Add textile helper method. Tilt supports textile for quite some time now...
rkh authored
388
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
389 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
390
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
391 === Sass Templates
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
392
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
393 Abhängigkeit:: {sass}[http://sass-lang.com/]
1746084 @burningTyger update German README
burningTyger authored
394 Dateierweiterung:: <tt>.sass</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
395 Beispiel:: <tt>sass :stylesheet, :style => :expanded</tt>
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
396
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
397 === SCSS Templates
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
398
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
399 Abhängigkeit:: {sass}[http://sass-lang.com/]
1746084 @burningTyger update German README
burningTyger authored
400 Dateierweiterung:: <tt>.scss</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
401 Beispiel:: <tt>scss :stylesheet, :style => :expanded</tt>
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
402
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
403 === Less Templates
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
404
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
405 Abhängigkeit:: {less}[http://www.lesscss.org/]
1746084 @burningTyger update German README
burningTyger authored
406 Dateierweiterung:: <tt>.less</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
407 Beispiel:: <tt>less :stylesheet</tt>
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
408
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
409 === Liquid Templates
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
410
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
411 Abhängigkeit:: {liquid}[http://www.liquidmarkup.org/]
1746084 @burningTyger update German README
burningTyger authored
412 Dateierweiterung:: <tt>.liquid</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
413 Beispiel:: <tt>liquid :index, :locals => { :key => 'Wert' }</tt>
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
414
f265aab @burningTyger updated German README
burningTyger authored
415 Da man aus dem Liquid-Template heraus keine Ruby-Methoden aufrufen kann
416 (ausgenommen +yield+), wird man üblicherweise locals verwenden wollen, mit
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
417 denen man Variablen weitergibt.
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
418
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
419 === Markdown Templates
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
420
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
421 Abhängigkeit:: {rdiscount}[https://github.com/rtomayko/rdiscount],
1746084 @burningTyger update German README
burningTyger authored
422 {redcarpet}[https://github.com/tanoku/redcarpet],
423 {bluecloth}[http://deveiate.org/projects/BlueCloth],
424 {kramdown}[http://kramdown.rubyforge.org/] *oder*
425 {maruku}[http://maruku.rubyforge.org/]
426 Dateierweiterungen:: <tt>.markdown</tt>, <tt>.mkd</tt> und <tt>.md</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
427 Beispiel:: <tt>markdown :index, :layout_engine => :erb</tt>
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
428
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
429 Da man aus den Markdown-Templates heraus keine Ruby-Methoden aufrufen und auch
430 keine locals verwenden kann, wird man Markdown üblicherweise in Kombination mit
431 anderen Renderern verwenden wollen:
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
432
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
433 erb :overview, :locals => { :text => markdown(:einfuehrung) }
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
434
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
435 Beachte, dass man die +markdown+-Methode auch aus anderen Templates heraus
436 aufrufen kann:
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
437
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
438 %h1 Gruß von Haml!
f265aab @burningTyger updated German README
burningTyger authored
439 %p= markdown(:Grüße)
c248dba @rkh Add rdoc helper method. Tilt supports RDoc for quite some time now, but ...
rkh authored
440
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
441 Da man Ruby nicht von Markdown heraus aufrufen kann, können auch Layouts nicht
f265aab @burningTyger updated German README
burningTyger authored
442 in Markdown geschrieben werden. Es ist aber möglich, einen Renderer für die
443 Templates zu verwenden und einen anderen für das Layout, indem die
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
444 <tt>:layout_engine</tt>-Option verwendet wird.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
445
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
446 === Textile Templates
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
447
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
448 Abhängigkeit:: {RedCloth}[http://redcloth.org/]
1746084 @burningTyger update German README
burningTyger authored
449 Dateierweiterung:: <tt>.textile</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
450 Beispiel:: <tt>textile :index, :layout_engine => :erb</tt>
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
451
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
452 Da man aus dem Textile-Template heraus keine Ruby-Methoden aufrufen und auch
453 keine locals verwenden kann, wird man Textile üblicherweise in Kombination mit
454 anderen Renderern verwenden wollen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
455
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
456 erb :overview, :locals => { :text => textile(:einfuehrung) }
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
457
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
458 Beachte, dass man die +textile+-Methode auch aus anderen Templates heraus
459 aufrufen kann:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
460
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
461 %h1 Gruß von Haml!
f265aab @burningTyger updated German README
burningTyger authored
462 %p= textile(:Grüße)
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
463
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
464 Da man Ruby nicht von Textile heraus aufrufen kann, können auch Layouts nicht
f265aab @burningTyger updated German README
burningTyger authored
465 in Textile geschrieben werden. Es ist aber möglich, einen Renderer für die
466 Templates zu verwenden und einen anderen für das Layout, indem die
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
467 <tt>:layout_engine</tt>-Option verwendet wird.
7cb94f2 @rkh Add radius helper method. Tilt supports radius for quite some time now, ...
rkh authored
468
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
469 === RDoc Templates
7cb94f2 @rkh Add radius helper method. Tilt supports radius for quite some time now, ...
rkh authored
470
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
471 Abhängigkeit:: {rdoc}[http://rdoc.rubyforge.org/]
1746084 @burningTyger update German README
burningTyger authored
472 Dateierweiterung:: <tt>.rdoc</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
473 Beispiel:: <tt>textile :README, :layout_engine => :erb</tt>
7cb94f2 @rkh Add radius helper method. Tilt supports radius for quite some time now, ...
rkh authored
474
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
475 Da man aus dem RDoc-Template heraus keine Ruby-Methoden aufrufen und auch
476 keine locals verwenden kann, wird man RDoc üblicherweise in Kombination mit
477 anderen Renderern verwenden wollen:
7cb94f2 @rkh Add radius helper method. Tilt supports radius for quite some time now, ...
rkh authored
478
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
479 erb :overview, :locals => { :text => rdoc(:einfuehrung) }
7cb94f2 @rkh Add radius helper method. Tilt supports radius for quite some time now, ...
rkh authored
480
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
481 Beachte, dass man die +rdoc+-Methode auch aus anderen Templates heraus
482 aufrufen kann:
8ce74b3 @rkh Add markaby helper method. Tilt supports Markaby for quite some time now...
rkh authored
483
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
484 %h1 Gruß von Haml!
485 %p= rdoc(:Grüße)
ca7fbe5 @rkh Add documentation for Slim templates.
rkh authored
486
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
487 Da man Ruby nicht von RDoc heraus aufrufen kann, können auch Layouts nicht
f265aab @burningTyger updated German README
burningTyger authored
488 in RDoc geschrieben werden. Es ist aber möglich, einen Renderer für die
489 Templates zu verwenden und einen anderen für das Layout, indem die
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
490 <tt>:layout_engine</tt>-Option verwendet wird.
ca7fbe5 @rkh Add documentation for Slim templates.
rkh authored
491
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
492 === Radius Templates
ca7fbe5 @rkh Add documentation for Slim templates.
rkh authored
493
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
494 Abhängigkeit:: {radius}[http://radius.rubyforge.org/]
1746084 @burningTyger update German README
burningTyger authored
495 Dateierweiterung:: <tt>.radius</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
496 Beispiel:: <tt>radius :index, :locals => { :key => 'Wert' }</tt>
ca7fbe5 @rkh Add documentation for Slim templates.
rkh authored
497
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
498 Da man aus dem Radius-Template heraus keine Ruby-Methoden aufrufen kann, wird
499 man üblicherweise locals verwenden wollen, mit denen man Variablen weitergibt.
ca7fbe5 @rkh Add documentation for Slim templates.
rkh authored
500
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
501 === Markaby Templates
8ce74b3 @rkh Add markaby helper method. Tilt supports Markaby for quite some time now...
rkh authored
502
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
503 Abhängigkeit:: {markaby}[http://markaby.github.com/]
1746084 @burningTyger update German README
burningTyger authored
504 Dateierweiterung:: <tt>.mab</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
505 Beispiel:: <tt>markaby { h1 "Willkommen!" }</tt>
9ce9e54 @rkh add support for creole templates
rkh authored
506
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
507 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
9ce9e54 @rkh add support for creole templates
rkh authored
508
1746084 @burningTyger update German README
burningTyger authored
509 === RABL Templates
9ce9e54 @rkh add support for creole templates
rkh authored
510
5bf54d5 @jc00ke Adding RABL support
jc00ke authored
511 Abhängigkeit:: {rabl}[https://github.com/nesquena/rabl]
1746084 @burningTyger update German README
burningTyger authored
512 Dateierweiterung:: <tt>.rabl</tt>
5bf54d5 @jc00ke Adding RABL support
jc00ke authored
513 Beispiel:: <tt>rabl :index</tt>
514
515 === Slim Templates
516
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
517 Abhängigkeit:: {slim}[http://slim-lang.com/]
1746084 @burningTyger update German README
burningTyger authored
518 Dateierweiterung:: <tt>.slim</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
519 Beispiel:: <tt>slim :index</tt>
9ce9e54 @rkh add support for creole templates
rkh authored
520
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
521 === Creole Templates
9ce9e54 @rkh add support for creole templates
rkh authored
522
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
523 Abhängigkeit:: {creole}[https://github.com/minad/creole]
1746084 @burningTyger update German README
burningTyger authored
524 Dateierweiterung:: <tt>.creole</tt>
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
525 Beispiel:: <tt>creole :wiki, :layout_engine => :erb</tt>
f58d015 @rkh Add coffee helper method. Tilt supports CoffeeScript again, but it was n...
rkh authored
526
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
527 Da man aus dem Creole-Template heraus keine Ruby-Methoden aufrufen und auch
528 keine locals verwenden kann, wird man Creole üblicherweise in Kombination mit
529 anderen Renderern verwenden wollen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
530
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
531 erb :overview, :locals => { :text => creole(:einfuehrung) }
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
532
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
533 Beachte, dass man die +creole+-Methode auch aus anderen Templates heraus
534 aufrufen kann:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
535
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
536 %h1 Gruß von Haml!
537 %p= creole(:Grüße)
f58d015 @rkh Add coffee helper method. Tilt supports CoffeeScript again, but it was n...
rkh authored
538
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
539 Da man Ruby nicht von Creole heraus aufrufen kann, können auch Layouts nicht
f265aab @burningTyger updated German README
burningTyger authored
540 in Creole geschrieben werden. Es ist aber möglich, einen Renderer für die
541 Templates zu verwenden und einen anderen für das Layout, indem die
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
542 <tt>:layout_engine</tt>-Option verwendet wird.
f58d015 @rkh Add coffee helper method. Tilt supports CoffeeScript again, but it was n...
rkh authored
543
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
544 === CoffeeScript Templates
f58d015 @rkh Add coffee helper method. Tilt supports CoffeeScript again, but it was n...
rkh authored
545
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
546 Abhängigkeit:: {coffee-script}[https://github.com/josh/ruby-coffee-script]
3af1fb3 @burningTyger update German Readme
burningTyger authored
547 und eine {Möglichkeit JavaScript auszuführen}[https://github.com/sstephenson/execjs/blob/master/README.md#readme]
1746084 @burningTyger update German README
burningTyger authored
548 Dateierweiterung:: <tt>.coffee</tt>
549 Beispiel:: <tt>coffee :index</tt>
550
551 === WLang Templates
552
553 Abhängigkeit:: {wlang}[https://github.com/blambeau/wlang/]
554 Dateierweiterung:: <tt>.wlang</tt>
555 Beispiel:: <tt>wlang :index, :locals => { :key => 'value' }</tt>
556
557 Ruby-Methoden in wlang aufzurufen entspricht nicht den idiomatischen Vorgaben
558 von wlang, es bietet sich deshalb an, <tt>:locals</tt> zu verwenden.
559 Layouts, die wlang und +yield+ verwenden, werden aber trotzdem unterstützt.
f58d015 @rkh Add coffee helper method. Tilt supports CoffeeScript again, but it was n...
rkh authored
560
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
561 === Eingebettete Templates
11e1f8a Add German translation of the README
Bernhard Essl authored
562
563 get '/' do
564 haml '%div.title Hallo Welt'
565 end
566
70bdfc7 @burningTyger update README.de.rdoc
burningTyger authored
567 Rendert den eingebetteten Template-String.
11e1f8a Add German translation of the README
Bernhard Essl authored
568
569 === Auf Variablen in Templates zugreifen
570
f265aab @burningTyger updated German README
burningTyger authored
571 Templates werden in demselben Kontext ausgeführt wie Routen. Instanzvariablen
7949da7 @burningTyger German readme update and fixes
burningTyger authored
572 in Routen sind auch direkt im Template verfügbar:
11e1f8a Add German translation of the README
Bernhard Essl authored
573
574 get '/:id' do
575 @foo = Foo.find(params[:id])
576 haml '%h1= @foo.name'
577 end
578
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
579 Oder durch einen expliziten Hash von lokalen Variablen:
11e1f8a Add German translation of the README
Bernhard Essl authored
580
581 get '/:id' do
582 foo = Foo.find(params[:id])
c8ce7cd @burningTyger updated the German docs
burningTyger authored
583 haml '%h1= bar.name', :locals => { :bar => foo }
11e1f8a Add German translation of the README
Bernhard Essl authored
584 end
585
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
586 Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
11e1f8a Add German translation of the README
Bernhard Essl authored
587 Templates eingesetzt.
588
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
589 === Inline-Templates
11e1f8a Add German translation of the README
Bernhard Essl authored
590
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
591 Templates können auch am Ende der Datei definiert werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
592
593 require 'sinatra'
594
595 get '/' do
596 haml :index
597 end
598
599 __END__
600
601 @@ layout
602 %html
603 = yield
604
605 @@ index
606 %div.title Hallo Welt!!!!!
607
8129ee4 corrected and improved the german README
tbuehlmann authored
608 Anmerkung: Inline-Templates, die in der Datei definiert sind, die <tt>require
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
609 'sinatra'</tt> aufruft, werden automatisch geladen. Um andere Inline-Templates
f265aab @burningTyger updated German README
burningTyger authored
610 in anderen Dateien aufzurufen, muss explizit <tt>enable :inline_templates</tt>
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
611 verwendet werden.
11e1f8a Add German translation of the README
Bernhard Essl authored
612
613 === Benannte Templates
614
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
615 Templates können auch mit der Top-Level <tt>template</tt>-Methode definiert
11e1f8a Add German translation of the README
Bernhard Essl authored
616 werden:
617
618 template :layout do
619 "%html\n =yield\n"
620 end
621
622 template :index do
623 '%div.title Hallo Welt!'
624 end
625
626 get '/' do
627 haml :index
628 end
629
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
630 Wenn ein Template mit dem Namen "layout" existiert, wird es bei jedem Aufruf
f265aab @burningTyger updated German README
burningTyger authored
631 verwendet. Durch <tt>:layout => false</tt> kann das Ausführen verhindert
7949da7 @burningTyger German readme update and fixes
burningTyger authored
632 werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
633
634 get '/' do
c8ce7cd @burningTyger updated the German docs
burningTyger authored
635 haml :index, :layout => request.xhr?
11e1f8a Add German translation of the README
Bernhard Essl authored
636 end
637
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
638 === Dateiendungen zuordnen
11e1f8a Add German translation of the README
Bernhard Essl authored
639
f265aab @burningTyger updated German README
burningTyger authored
640 Um eine Dateiendung einer Template-Engine zuzuordnen, kann
641 <tt>Tilt.register</tt> genutzt werden. Wenn etwa die Dateiendung +tt+ für
642 Textile-Templates genutzt werden soll, lässt sich dies wie folgt
7949da7 @burningTyger German readme update and fixes
burningTyger authored
643 bewerkstelligen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
644
645 Tilt.register :tt, Tilt[:textile]
646
8129ee4 corrected and improved the german README
tbuehlmann authored
647 === Eine eigene Template-Engine hinzufügen
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
648
f265aab @burningTyger updated German README
burningTyger authored
649 Zu allererst muss die Engine bei Tilt registriert und danach eine
8129ee4 corrected and improved the german README
tbuehlmann authored
650 Rendering-Methode erstellt werden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
651
0004c8e @rkh translating "Datieendungen zuordnen" and "Adding Your Own Template Engin...
rkh authored
652 Tilt.register :mtt, MeineTolleTemplateEngine
11e1f8a Add German translation of the README
Bernhard Essl authored
653
654 helpers do
0004c8e @rkh translating "Datieendungen zuordnen" and "Adding Your Own Template Engin...
rkh authored
655 def mtt(*args) render(:mtt, *args) end
11e1f8a Add German translation of the README
Bernhard Essl authored
656 end
657
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
658 get '/' do
0004c8e @rkh translating "Datieendungen zuordnen" and "Adding Your Own Template Engin...
rkh authored
659 mtt :index
11e1f8a Add German translation of the README
Bernhard Essl authored
660 end
661
0004c8e @rkh translating "Datieendungen zuordnen" and "Adding Your Own Template Engin...
rkh authored
662 Dieser Code rendert <tt>./views/application.mtt</tt>. Siehe
f265aab @burningTyger updated German README
burningTyger authored
663 github.com/rtomayko/tilt[https://github.com/rtomayko/tilt], um mehr über Tilt
7949da7 @burningTyger German readme update and fixes
burningTyger authored
664 zu lernen.
665
11e1f8a Add German translation of the README
Bernhard Essl authored
666 == Filter
667
f265aab @burningTyger updated German README
burningTyger authored
668 Before-Filter werden vor jedem Request in demselben Kontext, wie danach die
7949da7 @burningTyger German readme update and fixes
burningTyger authored
669 Routen, ausgeführt. So können etwa Request und Antwort geändert werden.
8129ee4 corrected and improved the german README
tbuehlmann authored
670 Gesetzte Instanzvariablen in Filtern können in Routen und Templates verwendet
671 werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
672
673 before do
674 @note = 'Hi!'
675 request.path_info = '/foo/bar/baz'
676 end
677
678 get '/foo/*' do
679 @note #=> 'Hi!'
680 params[:splat] #=> 'bar/baz'
681 end
682
8129ee4 corrected and improved the german README
tbuehlmann authored
683 After-Filter werden nach jedem Request in demselben Kontext ausgeführt und
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
684 können ebenfalls Request und Antwort ändern. In Before-Filtern gesetzte
8129ee4 corrected and improved the german README
tbuehlmann authored
685 Instanzvariablen können in After-Filtern verwendet werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
686
687 after do
688 puts response.status
689 end
690
8129ee4 corrected and improved the german README
tbuehlmann authored
691 Filter können optional auch mit einem Muster ausgestattet werden, welches auf
692 den Request-Pfad passen muss, damit der Filter ausgeführt wird:
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
693
694 before '/protected/*' do
695 authenticate!
696 end
697
698 after '/create/:slug' do |slug|
699 session[:last_slug] = slug
700 end
701
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
702 Ähnlich wie Routen können Filter auch mit weiteren Bedingungen eingeschränkt
703 werden:
7a9101a @rkh Like routes, filters now also take conditions:
rkh authored
704
705 before :agent => /Songbird/ do
706 # ...
707 end
f265aab @burningTyger updated German README
burningTyger authored
708
7a9101a @rkh Like routes, filters now also take conditions:
rkh authored
709 after '/blog/*', :host_name => 'example.com' do
710 # ...
711 end
712
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
713 == Helfer
714
8129ee4 corrected and improved the german README
tbuehlmann authored
715 Durch die Top-Level <tt>helpers</tt>-Methode werden sogenannte Helfer-Methoden
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
716 definiert, die in Routen und Templates verwendet werden können:
717
718 helpers do
719 def bar(name)
720 "#{name}bar"
721 end
722 end
723
724 get '/:name' do
725 bar(params[:name])
726 end
727
8129ee4 corrected and improved the german README
tbuehlmann authored
728 === Sessions verwenden
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
729 Sessions werden verwendet, um Zustände zwischen den Requests zu speichern.
8129ee4 corrected and improved the german README
tbuehlmann authored
730 Sind sie aktiviert, kann ein Session-Hash je Benutzer-Session verwendet werden.
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
731
732 enable :sessions
733
734 get '/' do
735 "value = " << session[:value].inspect
736 end
737
738 get '/:value' do
739 session[:value] = params[:value]
740 end
741
742 Beachte, dass <tt>enable :sessions</tt> alle Daten in einem Cookie speichert.
743 Unter Umständen kann dies negative Effekte haben, z.B. verursachen viele Daten
8129ee4 corrected and improved the german README
tbuehlmann authored
744 höheren, teilweise überflüssigen Traffic. Um das zu vermeiden, kann eine Rack-
745 Session-Middleware verwendet werden. Dabei wird auf <tt>enable :sessions</tt>
746 verzichtet und die Middleware wie üblich im Programm eingebunden:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
747
748 use Rack::Session::Pool, :expire_after => 2592000
749
750 get '/' do
751 "value = " << session[:value].inspect
752 end
753
754 get '/:value' do
755 session[:value] = params[:value]
756 end
757
d551575 @rkh improve German readme
rkh authored
758 Um die Sicherheit zu erhöhen, werden Cookies, die Session-Daten führen, mit
8129ee4 corrected and improved the german README
tbuehlmann authored
759 einem sogenannten Session-Secret signiert. Da sich dieses Geheimwort bei jedem
760 Neustart der Applikation automatisch ändert, ist es sinnvoll, ein eigenes zu
761 wählen, damit sich alle Instanzen der Applikation dasselbe Session-Secret
762 teilen:
b23d9dd @burningTyger update German readme with session secret
burningTyger authored
763
764 set :session_secret, 'super secret'
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
765
54fb37f @burningTyger complete update for README.de.rdoc
burningTyger authored
766 Zur weiteren Konfiguration kann man einen Hash mit Optionen in den +sessions+
767 Einstellungen ablegen.
768
769 set :sessions, :domain => 'foo.com'
770
11e1f8a Add German translation of the README
Bernhard Essl authored
771 == Anhalten
772
8129ee4 corrected and improved the german README
tbuehlmann authored
773 Zum sofortigen Stoppen eines Request in einem Filter oder einer Route:
11e1f8a Add German translation of the README
Bernhard Essl authored
774
775 halt
776
8129ee4 corrected and improved the german README
tbuehlmann authored
777 Der Status kann beim Stoppen auch angegeben werden:
11e1f8a Add German translation of the README
Bernhard Essl authored
778
779 halt 410
780
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
781 Oder auch den Response-Body:
11e1f8a Add German translation of the README
Bernhard Essl authored
782
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
783 halt 'Hier steht der Body'
11e1f8a Add German translation of the README
Bernhard Essl authored
784
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
785 Oder beides:
11e1f8a Add German translation of the README
Bernhard Essl authored
786
787 halt 401, 'verschwinde!'
788
8129ee4 corrected and improved the german README
tbuehlmann authored
789 Sogar mit Headern:
11e1f8a Add German translation of the README
Bernhard Essl authored
790
791 halt 402, {'Content-Type' => 'text/plain'}, 'Rache'
792
8129ee4 corrected and improved the german README
tbuehlmann authored
793 Natürlich ist es auch möglich, ein Template mit +halt+ zu verwenden:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
794
795 halt erb(:error)
796
11e1f8a Add German translation of the README
Bernhard Essl authored
797 == Weiterspringen
798
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
799 Eine Route kann mittels <tt>pass</tt> zu der nächsten passenden Route springen:
11e1f8a Add German translation of the README
Bernhard Essl authored
800
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
801 get '/raten/:wer' do
802 pass unless params[:wer] == 'Frank'
11e1f8a Add German translation of the README
Bernhard Essl authored
803 'Du hast mich!'
804 end
805
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
806 get '/raten/*' do
7949da7 @burningTyger German readme update and fixes
burningTyger authored
807 'Du hast mich nicht!'
11e1f8a Add German translation of the README
Bernhard Essl authored
808 end
809
810 Der Block wird sofort verlassen und es wird nach der nächsten treffenden Route
8129ee4 corrected and improved the german README
tbuehlmann authored
811 gesucht. Ein 404-Fehler wird zurückgegeben, wenn kein treffendes Routen-Muster
11e1f8a Add German translation of the README
Bernhard Essl authored
812 gefunden wird.
813
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
814 === Eine andere Route ansteuern
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
815
d59a98c @rkh remove trailing whitespaces
rkh authored
816 Manchmal entspricht +pass+ nicht den Anforderungen, wenn das Ergebnis einer
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
817 anderen Route gefordert wird. Um das zu erreichen, lässt sich +call+ nutzen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
818
819 get '/foo' do
66f1256 @rkh env is accessable directly, no need to use request.env
rkh authored
820 status, headers, body = call env.merge("PATH_INFO" => '/bar')
039675f @rkh test and fix #call example
rkh authored
821 [status, headers, body.map(&:upcase)]
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
822 end
823
824 get '/bar' do
825 "bar"
826 end
827
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
828 Beachte, dass in dem oben angegeben Beispiel die Performance erheblich erhöht
f265aab @burningTyger updated German README
burningTyger authored
829 werden kann, wenn <tt>"bar"</tt> in eine Helfer-Methode umgewandelt wird, auf
7949da7 @burningTyger German readme update and fixes
burningTyger authored
830 die <tt>/foo</tt> und <tt>/bar</tt> zugreifen können.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
831
8129ee4 corrected and improved the german README
tbuehlmann authored
832 Wenn der Request innerhalb derselben Applikations-Instanz aufgerufen und keine
7949da7 @burningTyger German readme update and fixes
burningTyger authored
833 Kopie der Instanz erzeugt werden soll, kann <tt>call!</tt> anstelle von
8129ee4 corrected and improved the german README
tbuehlmann authored
834 +call+ verwendet werden.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
835
8129ee4 corrected and improved the german README
tbuehlmann authored
836 Die Rack-Spezifikationen enthalten weitere Informationen zu +call+.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
837
8129ee4 corrected and improved the german README
tbuehlmann authored
838 === Body, Status-Code und Header setzen
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
839
8129ee4 corrected and improved the german README
tbuehlmann authored
840 Es ist möglich und empfohlen, den Status-Code sowie den Response-Body mit einem
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
841 Returnwert in der Route zu setzen. In manchen Situationen kann es jedoch sein,
d59a98c @rkh remove trailing whitespaces
rkh authored
842 dass der Body an irgendeiner anderen Stelle während der Ausführung gesetzt
8129ee4 corrected and improved the german README
tbuehlmann authored
843 wird. Das lässt sich mit der Helfer-Methode +body+ bewerkstelligen. Wird +body+
844 verwendet, lässt sich der Body jederzeit über diese Methode aufrufen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
845
846 get '/foo' do
847 body "bar"
848 end
f265aab @burningTyger updated German README
burningTyger authored
849
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
850 after do
851 puts body
852 end
853
8129ee4 corrected and improved the german README
tbuehlmann authored
854 Ebenso ist es möglich, einen Block an +body+ weiterzureichen, der dann vom
f265aab @burningTyger updated German README
burningTyger authored
855 Rack-Handler ausgeführt wird (lässt sich z.B. zur Umsetzung von Streaming
7949da7 @burningTyger German readme update and fixes
burningTyger authored
856 einsetzen, siehe auch "Rückgabewerte").
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
857
8129ee4 corrected and improved the german README
tbuehlmann authored
858 Vergleichbar mit +body+ lassen sich auch Status-Code und Header setzen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
859
860 get '/foo' do
861 status 418
f733dd7 @rkh Translate README to German up to b40d8ca22427215303b4
rkh authored
862 headers \
9f69232 @rkh fix teapot example
rkh authored
863 "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
f733dd7 @rkh Translate README to German up to b40d8ca22427215303b4
rkh authored
864 "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
865 halt "Ich bin ein Teekesselchen"
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
866 end
867
8129ee4 corrected and improved the german README
tbuehlmann authored
868 Genau wie bei +body+ liest ein Aufrufen von +headers+ oder +status+ ohne
f733dd7 @rkh Translate README to German up to b40d8ca22427215303b4
rkh authored
869 Argumente den aktuellen Wert aus.
870
3af1fb3 @burningTyger update German Readme
burningTyger authored
871 === Response-Streams
872
f265aab @burningTyger updated German README
burningTyger authored
873 In manchen Situationen sollen Daten bereits an den Client zurückgeschickt
874 werden, bevor ein vollständiger Response bereit steht. Manchmal will man die
875 Verbindung auch erst dann beenden und Daten so lange an den Client
876 zurückschicken, bis er die Verbindung abbricht. Für diese Fälle gibt es die
3af1fb3 @burningTyger update German Readme
burningTyger authored
877 +stream+-Helfer-Methode, die es einem erspart eigene Lösungen zu schreiben:
878
879 get '/' do
880 stream do |out|
881 out << "Das ist ja mal wieder fanta -\n"
882 sleep 0.5
883 out << " (bitte warten…) \n"
884 sleep 1
885 out << "- stisch!\n"
886 end
887 end
888
f265aab @burningTyger updated German README
burningTyger authored
889 Damit lassen sich Streaming-APIs realisieren, sog.
890 {Server Sent Events}[http://dev.w3.org/html5/eventsource/] die als Basis für
891 {WebSockets}[http://en.wikipedia.org/wiki/WebSocket] dienen. Ebenso können sie
892 verwendet werden, um den Durchsatz zu erhöhen, wenn ein Teil der Daten von
893 langsamen Ressourcen abhängig ist.
3af1fb3 @burningTyger update German Readme
burningTyger authored
894
895 Es ist zu beachten, dass das Verhalten beim Streaming, insbesondere die Anzahl
f265aab @burningTyger updated German README
burningTyger authored
896 nebenläufiger Anfragen, stark davon abhängt, welcher Webserver für die
3af1fb3 @burningTyger update German Readme
burningTyger authored
897 Applikation verwendet wird. Einige Server, z.B. WEBRick, unterstützen Streaming
898 nicht oder nur teilweise. Sollte der Server Streaming nicht unterstützen, wird
f265aab @burningTyger updated German README
burningTyger authored
899 ein vollständiger Response-Body zurückgeschickt, sobald der an +stream+
900 weitergegebene Block abgearbeitet ist. Mit Shotgun funktioniert Streaming z.B.
901 überhaupt nicht.
3af1fb3 @burningTyger update German Readme
burningTyger authored
902
903 Ist der optionale Parameter +keep_open+ aktiviert, wird beim gestreamten Objekt
f265aab @burningTyger updated German README
burningTyger authored
904 +close+ nicht aufgerufen und es ist einem überlassen dies an einem beliebigen
3af1fb3 @burningTyger update German Readme
burningTyger authored
905 späteren Zeitpunkt nachholen. Die Funktion ist jedoch nur bei Event-gesteuerten
906 Serven wie Thin oder Rainbows möglich, andere Server werden trotzdem den Stream
907 beenden:
908
909 set :server, :thin
910 connections = []
911
912 get '/' do
913 # Den Stream offen halten
914 stream(:keep_open) { |out| connections << out }
915 end
916
917 post '/' do
918 # In alle offenen Streams schreiben
919 connections.each { |out| out << params[:message] << "\n" }
920 "Nachricht verschickt"
921 end
f265aab @burningTyger updated German README
burningTyger authored
922
54fb37f @burningTyger complete update for README.de.rdoc
burningTyger authored
923 === Logger
924
925 Im Geltungsbereich eines Request stellt die +logger+ Helfer-Methode eine
926 +Logger+ Instanz zur Verfügung:
927
928 get '/' do
929 logger.info "es passiert gerade etwas"
930 # ...
931 end
932
933 Der Logger übernimmt dabei automatisch alle im Rack-Handler eingestellten Log-
934 Vorgaben. Ist Loggen ausgeschaltet, gibt die Methode ein Leerobjekt zurück.
935 In den Routen und Filtern muss man sich also nicht weiter darum kümmern.
936
937 Beachte, dass das Loggen standardmäßig nur für <tt>Sinatra::Application</tt>
938 voreingestellt ist. Wird über <tt>Sinatra::Base</tt> vererbt, muss es erst
939 aktiviert werden:
940
941 class MyApp < Sinatra::Base
f265aab @burningTyger updated German README
burningTyger authored
942 configure :production, :development do
54fb37f @burningTyger complete update for README.de.rdoc
burningTyger authored
943 enable :logging
944 end
945 end
946
f265aab @burningTyger updated German README
burningTyger authored
947 Damit auch keine Middleware das Logging aktivieren kann, muss die +logging+
948 Einstellung auf +nil+ gesetzt werden. Das heißt aber auch, dass +logger+ in
949 diesem Fall +nil+ zurückgeben wird. Üblicherweise wird das eingesetzt, wenn ein
950 eigener Logger eingerichtet werden soll. Sinatra wird dann verwenden, was in
951 <tt>env['rack.logger']</tt> eingetragen ist.
952
f733dd7 @rkh Translate README to German up to b40d8ca22427215303b4
rkh authored
953 == Mime-Types
954
955 Wenn <tt>send_file</tt> oder statische Dateien verwendet werden, kann es
956 vorkommen, dass Sinatra den Mime-Typ nicht kennt. Registriert wird dieser mit
957 +mime_type+ per Dateiendung:
958
c8ce7cd @burningTyger updated the German docs
burningTyger authored
959 configure do
960 mime_type :foo, 'text/foo'
961 end
f265aab @burningTyger updated German README
burningTyger authored
962
8129ee4 corrected and improved the german README
tbuehlmann authored
963 Es kann aber auch der +content_type+-Helfer verwendet werden:
f733dd7 @rkh Translate README to German up to b40d8ca22427215303b4
rkh authored
964
965 get '/' do
966 content_type :foo
967 "foo foo foo"
968 end
969
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
970 === URLs generieren
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
971
f265aab @burningTyger updated German README
burningTyger authored
972 Zum Generieren von URLs sollte die +url+-Helfer-Methode genutzen werden, so
7949da7 @burningTyger German readme update and fixes
burningTyger authored
973 z.B. beim Einsatz von Haml:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
974
975 %a{:href => url('/foo')} foo
976
8129ee4 corrected and improved the german README
tbuehlmann authored
977 Soweit vorhanden, wird Rücksicht auf Proxys und Rack-Router genommen.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
978
8129ee4 corrected and improved the german README
tbuehlmann authored
979 Diese Methode ist ebenso über das Alias +to+ zu erreichen (siehe Beispiel
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
980 unten).
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
981
8129ee4 corrected and improved the german README
tbuehlmann authored
982 === Browser-Umleitung
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
983
8129ee4 corrected and improved the german README
tbuehlmann authored
984 Eine Browser-Umleitung kann mithilfe der +redirect+-Helfer-Methode erreicht
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
985 werden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
986
987 get '/foo' do
988 redirect to('/bar')
989 end
990
8129ee4 corrected and improved the german README
tbuehlmann authored
991 Weitere Parameter werden wie Argumente der +halt+-Methode behandelt:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
992
993 redirect to('/bar'), 303
7949da7 @burningTyger German readme update and fixes
burningTyger authored
994 redirect 'http://google.com', 'Hier bist du falsch'
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
995
f265aab @burningTyger updated German README
burningTyger authored
996 Ebenso leicht lässt sich ein Schritt zurück mit dem Alias
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
997 <tt>redirect back</tt> erreichen:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
998
999 get '/foo' do
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1000 "<a href='/bar'>mach was</a>"
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1001 end
1002
1003 get '/bar' do
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1004 mach_was
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1005 redirect back
1006 end
1007
8129ee4 corrected and improved the german README
tbuehlmann authored
1008 Um Argumente an ein Redirect weiterzugeben, können sie entweder dem Query
1009 übergeben:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1010
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1011 redirect to('/bar?summe=42')
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1012
8129ee4 corrected and improved the german README
tbuehlmann authored
1013 oder eine Session verwendet werden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1014
e6ab1e8 @Igneous fix readme: enable :session => enable :sessions
Igneous authored
1015 enable :sessions
f265aab @burningTyger updated German README
burningTyger authored
1016
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1017 get '/foo' do
1018 session[:secret] = 'foo'
1019 redirect to('/bar')
1020 end
f265aab @burningTyger updated German README
burningTyger authored
1021
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1022 get '/bar' do
1023 session[:secret]
1024 end
1025
868aa64 @burningTyger de translation for cache control
burningTyger authored
1026
1027 === Cache einsetzen
1028
8bb842f @rkh improve German readme
rkh authored
1029 Ein sinnvolles Einstellen von Header-Daten ist die Grundlage für ein
868aa64 @burningTyger de translation for cache control
burningTyger authored
1030 ordentliches HTTP-Caching.
1031
1032 Der Cache-Control-Header lässt sich ganz einfach einstellen:
1033
1034 get '/' do
1035 cache_control :public
1036 "schon gecached!"
1037 end
1038
1039 Profitipp: Caching im before-Filter aktivieren
1040
1041 before do
1042 cache_control :public, :must_revalidate, :max_age => 60
1043 end
1044
1045 Bei Verwendung der +expires+-Helfermethode zum Setzen des gleichnamigen
1046 Headers, wird <tt>Cache-Control</tt> automatisch eigestellt:
1047
1048 before do
1049 expires 500, :public, :must_revalidate
1050 end
1051
3af1fb3 @burningTyger update German Readme
burningTyger authored
1052 Um alles richtig zu machen, sollten auch +etag+ oder +last_modified+ verwendet
868aa64 @burningTyger de translation for cache control
burningTyger authored
1053 werden. Es wird empfohlen, dass diese Helfer aufgerufen werden *bevor* die
8bb842f @rkh improve German readme
rkh authored
1054 eigentliche Arbeit anfängt, da sie sofort eine Antwort senden, wenn der
868aa64 @burningTyger de translation for cache control
burningTyger authored
1055 Client eine aktuelle Version im Cache vorhält:
1056
1057 get '/article/:id' do
1058 @article = Article.find params[:id]
1059 last_modified @article.updated_at
1060 etag @article.sha1
1061 erb :article
1062 end
1063
8bb842f @rkh improve German readme
rkh authored
1064 ebenso ist es möglich einen
868aa64 @burningTyger de translation for cache control
burningTyger authored
1065 {schwachen ETag}[http://de.wikipedia.org/wiki/HTTP_ETag] zu verwenden:
1066
1067 etag @article.sha1, :weak
1068
1069 Diese Helfer führen nicht das eigentliche Caching aus, sondern geben die dafür
f265aab @burningTyger updated German README
burningTyger authored
1070 notwendigen Informationen an den Cache weiter. Für schnelle Reverse-Proxy
1071 Cache-Lösungen bietet sich z.B.
3af1fb3 @burningTyger update German Readme
burningTyger authored
1072 {rack-cache}[http://rtomayko.github.com/rack-cache/] an:
868aa64 @burningTyger de translation for cache control
burningTyger authored
1073
1074 require "rack/cache"
1075 require "sinatra"
f265aab @burningTyger updated German README
burningTyger authored
1076
868aa64 @burningTyger de translation for cache control
burningTyger authored
1077 use Rack::Cache
f265aab @burningTyger updated German README
burningTyger authored
1078
868aa64 @burningTyger de translation for cache control
burningTyger authored
1079 get '/' do
1080 cache_control :public, :max_age => 36000
1081 sleep 5
1082 "hello"
1083 end
f265aab @burningTyger updated German README
burningTyger authored
1084
604e747 @burningTyger update German README
burningTyger authored
1085 Um den <tt>Cache-Control</tt>-Header mit Informationen zu versorgen, verwendet
f265aab @burningTyger updated German README
burningTyger authored
1086 man die <tt>:static_cache_control</tt>-Einstellung (s.u.).
1087
1088 Nach RFC 2616 sollte sich die Anwendung anders verhalten, wenn ein
1089 If-Match oder ein If-None_match Header auf <tt>*</tt> gesetzt wird in
1090 Abhängigkeit davon, ob die Resource bereits existiert. Sinatra geht
1091 davon aus, dass Ressourcen bei sicheren Anfragen (z.B. bei get oder Idempotenten
1092 Anfragen wie put) bereits existieren, wobei anderen Ressourcen
1093 (besipielsweise bei post), als neue Ressourcen behandelt werden. Dieses
1094 Verhalten lässt sich mit der <tt>:new_resource</tt> Option ändern:
1095
1096 get '/create' do
1097 etag '', :new_resource => true
1098 Article.create
1099 erb :new_article
1100 end
1101
1102 Soll das schwache ETag trotzdem verwendet werden, verwendet man die
1103 <tt>:kind</tt> Option:
1104
1105 etag '', :new_resource => true, :kind => :weak
868aa64 @burningTyger de translation for cache control
burningTyger authored
1106
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1107 === Dateien versenden
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1108
8129ee4 corrected and improved the german README
tbuehlmann authored
1109 Zum Versenden von Dateien kann die <tt>send_file</tt>-Helfer-Methode verwendet
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1110 werden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1111
1112 get '/' do
1113 send_file 'foo.png'
1114 end
1115
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1116 Für <tt>send_file</tt> stehen einige Hash-Optionen zur Verfügung:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1117
1118 send_file 'foo.png', :type => :jpg
1119
1120 [filename]
8129ee4 corrected and improved the german README
tbuehlmann authored
1121 Dateiname als Response. Standardwert ist der eigentliche Dateiname.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1122
1123 [last_modified]
8129ee4 corrected and improved the german README
tbuehlmann authored
1124 Wert für den Last-Modified-Header, Standardwert ist +mtime+ der Datei.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1125
1126 [type]
8129ee4 corrected and improved the german README
tbuehlmann authored
1127 Content-Type, der verwendet werden soll. Wird, wenn nicht angegeben, von der
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1128 Dateiendung abgeleitet.
f265aab @burningTyger updated German README
burningTyger authored
1129
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1130 [disposition]
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1131 Verwendet für Content-Disposition. Mögliche Werte sind: +nil+ (Standard),
8129ee4 corrected and improved the german README
tbuehlmann authored
1132 <tt>:attachment</tt> und <tt>:inline</tt>.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1133
1134 [length]
8129ee4 corrected and improved the german README
tbuehlmann authored
1135 Content-Length-Header. Standardwert ist die Dateigröße.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1136
8129ee4 corrected and improved the german README
tbuehlmann authored
1137 Soweit vom Rack-Handler unterstützt, werden neben der Übertragung über den
1138 Ruby-Prozess auch andere Möglichkeiten genutzt. Bei Verwendung der
1139 <tt>send_file</tt>-Helfer-Methode kümmert sich Sinatra selbstständig um die
1140 Range-Requests.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1141
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1142 == Das Request-Objekt
1143
8129ee4 corrected and improved the german README
tbuehlmann authored
1144 Auf das +request+-Objekt der eigehenden Anfrage kann vom Anfrage-Scope aus
1145 zugegriffen werden:
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1146
1147 # App läuft unter http://example.com/example
1148 get '/foo' do
54fb37f @burningTyger complete update for README.de.rdoc
burningTyger authored
1149 t = %w[text/css text/html application/javascript]
1150 request.accept # ['text/html', '*/*']
1151 request.accept? 'text/xml' # true
1152 request.preferred_type(t) # 'text/html'
1153 request.body # Request-Body des Client (siehe unten)
1154 request.scheme # "http"
1155 request.script_name # "/example"
1156 request.path_info # "/foo"
1157 request.port # 80
1158 request.request_method # "GET"
1159 request.query_string # ""
1160 request.content_length # Länge des request.body
1161 request.media_type # Medientypus von request.body
1162 request.host # "example.com"
1163 request.get? # true (ähnliche Methoden für andere Verben)
1164 request.form_data? # false
1165 request["IRGENDEIN_HEADER"] # Wert von IRGENDEIN_HEADER header
1166 request.referrer # Der Referrer des Clients oder '/'
1167 request.user_agent # User-Agent (verwendet in der :agent Bedingung)
1168 request.cookies # Hash des Browser-Cookies
1169 request.xhr? # Ist das hier ein Ajax-Request?
1170 request.url # "http://example.com/example/foo"
1171 request.path # "/example/foo"
1172 request.ip # IP-Adresse des Clients
1173 request.secure? # false (true wenn SSL)
1174 request.forwarded? # true (Wenn es hinter einem Reverse-Proxy verwendet wird)
1175 request.env # vollständiger env-Hash von Rack übergeben
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1176 end
1177
8129ee4 corrected and improved the german README
tbuehlmann authored
1178 Manche Optionen, wie etwa <tt>script_name</tt> oder <tt>path_info</tt>, sind
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1179 auch schreibbar:
1180
1181 before { request.path_info = "/" }
f265aab @burningTyger updated German README
burningTyger authored
1182
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1183 get "/" do
1184 "Alle Anfragen kommen hier an!"
1185 end
1186
8129ee4 corrected and improved the german README
tbuehlmann authored
1187 Der <tt>request.body</tt> ist ein IO- oder StringIO-Objekt:
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1188
1189 post "/api" do
8129ee4 corrected and improved the german README
tbuehlmann authored
1190 request.body.rewind # falls schon jemand davon gelesen hat
4595a1e @rkh Add Scopes, Middleware and Request sections to German README.
rkh authored
1191 daten = JSON.parse request.body.read
1192 "Hallo #{daten['name']}!"
1193 end
1194
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
1195 === Anhänge
1196
8129ee4 corrected and improved the german README
tbuehlmann authored
1197 Damit der Browser erkennt, dass ein Response gespeichert und nicht im Browser
1198 angezeigt werden soll, kann der +attachment+-Helfer verwendet werden:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
1199
1200 get '/' do
1201 attachment
1202 "Speichern!"
1203 end
1204
8129ee4 corrected and improved the german README
tbuehlmann authored
1205 Ebenso kann eine Dateiname als Parameter hinzugefügt werden:
b9d49cf @burningTyger Readme[.de].rdoc update
burningTyger authored
1206
1207 get '/' do
1208 attachment "info.txt"
1209 "Speichern!"
1210 end
1211
3af1fb3 @burningTyger update German Readme
burningTyger authored
1212 === Umgang mit Datum und Zeit
1213
f265aab @burningTyger updated German README
burningTyger authored
1214 Sinatra bietet eine <tt>time_for</tt>-Helfer-Methode, die aus einem gegebenen
1215 Wert ein Time-Objekt generiert. Ebenso kann sie nach +DateTime+, +Date+ und
3af1fb3 @burningTyger update German Readme
burningTyger authored
1216 ähnliche Klassen konvertieren:
1217
1218 get '/' do
1219 pass if Time.now > time_for('Dec 23, 2012')
1220 "noch Zeit"
1221 end
1222
1223 Diese Methode wird intern für +expires, +last_modiefied+ und Freunde verwendet.
f265aab @burningTyger updated German README
burningTyger authored
1224 Mit ein paar Handgriffen lässt sich diese Methode also in ihrem Verhalten
3af1fb3 @burningTyger update German Readme
burningTyger authored
1225 erweitern, indem man +time_for+ in der eigenen Applikation überschreibt:
1226
1227 helpers do
1228 def time_for(value)
1229 case value
1230 when :yesterday then Time.now - 24*60*60
1231 when :tomorrow then Time.now + 24*60*60
1232 else super
1233 end
1234 end
1235 end
1236
1237 get '/' do
1238 last_modified :yesterday
1239 expires :tomorrow
1240 "Hallo"
1241 end
f265aab @burningTyger updated German README
burningTyger authored
1242
8129ee4 corrected and improved the german README
tbuehlmann authored
1243 === Nachschlagen von Template-Dateien
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1244
8129ee4 corrected and improved the german README
tbuehlmann authored
1245 Die <tt>find_template</tt>-Helfer-Methode wird genutzt, um Template-Dateien zum
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1246 Rendern aufzufinden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1247
1248 find_template settings.views, 'foo', Tilt[:haml] do |file|
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1249 puts "könnte diese hier sein: #{file}"
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1250 end
1251
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1252 Das ist zwar nicht wirklich brauchbar, aber wenn man sie überschreibt, kann sie
8129ee4 corrected and improved the german README
tbuehlmann authored
1253 nützlich werden, um eigene Nachschlage-Mechanismen einzubauen. Zum Beispiel
1254 dann, wenn mehr als nur ein view-Verzeichnis verwendet werden soll:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1255
1256 set :views, ['views', 'templates']
1257
1258 helpers do
1259 def find_template(views, name, engine, &block)
1260 Array(views).each { |v| super(v, name, engine, &block) }
1261 end
1262 end
1263
8129ee4 corrected and improved the german README
tbuehlmann authored
1264 Ein anderes Beispiel wäre, verschiedene Vereichnisse für verschiedene Engines
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1265 zu verwenden:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1266
1267 set :views, :sass => 'views/sass', :haml => 'templates', :default => 'views'
1268
1269 helpers do
1270 def find_template(views, name, engine, &block)
1271 _, folder = views.detect { |k,v| engine == Tilt[k] }
1272 folder ||= views[:default]
1273 super(folder, name, engine, &block)
1274 end
1275 end
1276
8129ee4 corrected and improved the german README
tbuehlmann authored
1277 Ebensogut könnte eine Extension aber auch geschrieben und mit anderen geteilt
1278 werden!
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1279
d59a98c @rkh remove trailing whitespaces
rkh authored
1280 Beachte, dass <tt>find_template</tt> nicht prüft, ob eine Datei tatsächlich
1281 existiert. Es wird lediglich der angegebene Block aufgerufen und nach allen
8129ee4 corrected and improved the german README
tbuehlmann authored
1282 möglichen Pfaden gesucht. Das ergibt kein Performance-Problem, da +render+
d59a98c @rkh remove trailing whitespaces
rkh authored
1283 +block+ verwendet, sobald eine Datei gefunden wurde. Ebenso werden
8129ee4 corrected and improved the german README
tbuehlmann authored
1284 Template-Pfade samt Inhalt gecached, solange nicht im Entwicklungsmodus
1285 gearbeitet wird. Das sollte im Hinterkopf behalten werden, wenn irgendwelche
1286 verrückten Methoden zusammenbastelt werden.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1287
11e1f8a Add German translation of the README
Bernhard Essl authored
1288 == Konfiguration
1289
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
1290 Wird einmal beim Starten in jedweder Umgebung ausgeführt:
11e1f8a Add German translation of the README
Bernhard Essl authored
1291
1292 configure do
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1293 # setze eine Option
1294 set :option, 'wert'
f265aab @burningTyger updated German README
burningTyger authored
1295
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1296 # setze mehrere Optionen
1297 set :a => 1, :b => 2
f265aab @burningTyger updated German README
burningTyger authored
1298
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1299 # das gleiche wie `set :option, true`
1300 enable :option
f265aab @burningTyger updated German README
burningTyger authored
1301
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1302 # das gleiche wie `set :option, false`
1303 disable :option
f265aab @burningTyger updated German README
burningTyger authored
1304
8129ee4 corrected and improved the german README
tbuehlmann authored
1305 # dynamische Einstellungen mit Blöcken
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1306 set(:css_dir) { File.join(views, 'css') }
11e1f8a Add German translation of the README
Bernhard Essl authored
1307 end
1308
8129ee4 corrected and improved the german README
tbuehlmann authored
1309 Läuft nur, wenn die Umgebung (RACK_ENV-Umgebungsvariable) auf
b7b43f7 @rkh German README: Improve language and bring up to speed with English versi...
rkh authored
1310 <tt>:production</tt> gesetzt ist:
11e1f8a Add German translation of the README
Bernhard Essl authored
1311
1312 configure :production do
1313 ...
1314 end
1315
64b45ec @burningTyger Typos fixed. Thank you for translating this document in the first place ...
burningTyger authored
1316 Läuft nur, wenn die Umgebung auf <tt>:production</tt> oder auf <tt>:test</tt>
11e1f8a Add German translation of the README
Bernhard Essl authored
1317 gesetzt ist:
1318
1319 configure :production, :test do
1320 ...
1321 end
1322
8129ee4 corrected and improved the german README
tbuehlmann authored
1323 Diese Einstellungen sind über +settings+ erreichbar:
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1324
1325 configure do
1326 set :foo, 'bar'
1327 end
1328
1329 get '/' do
1330 settings.foo? # => true
1331 settings.foo # => 'bar'
1332 ...
1333 end
1334
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
1335 === Einstellung des Angriffsschutzes
1336
f265aab @burningTyger updated German README
burningTyger authored
1337 Sinatra verwendet
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
1338 {Rack::Protection}[https://github.com/rkh/rack-protection#readme], um die
1339 Anwendung vor häufig vorkommenden Angriffen zu schützen. Diese Voreinstellung
1746084 @burningTyger update German README
burningTyger authored
1340 lässt sich selbstverständlich deaktivieren, der damit verbundene
1341 Geschwindigkeitszuwachs steht aber in keinem Verhätnis zu den möglichen
1342 Risiken.
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
1343
1344 disable :protection
1345
1346 Um einen bestimmten Schutzmechanismus zu deaktivieren, fügt man +protection+
1347 einen Hash mit Optionen hinzu:
1348
1349 set :protection, :except => :path_traversal
1350
f265aab @burningTyger updated German README
burningTyger authored
1351 Neben Strings akzeptiert <tt>:except</tt> auch Arrays, um gleich mehrere
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
1352 Schutzmechanismen zu deaktivieren:
1353
f265aab @burningTyger updated German README
burningTyger authored
1354 set :protection, :except => [:path_traversal, :session_hijacking]
1355
2a5e5e1 @burningTyger fully translated README.de.rdoc
burningTyger authored
1356 === Mögliche Einstellungen
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1357
604e747 @burningTyger update German README
burningTyger authored
1358 [absolute_redirects] Wenn ausgeschaltet, wird Sinatra relative Redirects
f265aab @burningTyger updated German README
burningTyger authored
1359 zulassen. Jedoch ist Sinatra dann nicht mehr mit RFC
1360 2616 (HTTP 1.1) konform, das nur absolute Redirects
604e747 @burningTyger update German README
burningTyger authored
1361 zulässt.
1362
1363 Sollte eingeschaltet werden, wenn die Applikation
f265aab @burningTyger updated German README
burningTyger authored
1364 hinter einem Reverse-Proxy liegt, der nicht ordentlich
1365 eingerichtet ist. Beachte, dass die
1366 +url+-Helfer-Methode nach wie vor absolute URLs
1367 erstellen wird, es sei denn, es wird als zweiter
604e747 @burningTyger update German README
burningTyger authored
1368 Parameter +false+ angegeben.
1369
1370 Standardmäßig nicht aktiviert.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1371
604e747 @burningTyger update German README
burningTyger authored
1372 [add_charsets] Mime-Types werden hier automatisch der Helfer-Methode
1373 <tt>content_type</tt> zugeordnet.
f265aab @burningTyger updated German README
burningTyger authored
1374
604e747 @burningTyger update German README
burningTyger authored
1375 Es empfielt sich, Werte hinzuzufügen statt sie zu
1376 überschreiben:
f265aab @burningTyger updated German README
burningTyger authored
1377
604e747 @burningTyger update German README
burningTyger authored
1378 settings.add_charsets << "application/foobar"
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1379
f265aab @burningTyger updated German README
burningTyger authored
1380 [app_file] Pfad zur Hauptdatei der Applikation. Wird verwendet, um
1381 das Wurzel-, Inline-, View- und öffentliche Verzeichnis
1382 des Projekts festzustellen.
1383
1384 [bind] IP-Address, an die gebunden wird
1385 (Standardwert: 0.0.0.0). Wird nur für den eingebauten
604e747 @burningTyger update German README
burningTyger authored
1386 Server verwendet.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1387
604e747 @burningTyger update German README
burningTyger authored
1388 [default_encoding] Das Encoding, falls keines angegeben wurde.
1389 Standardwert ist <tt>"utf-8"</tt>.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1390
604e747 @burningTyger update German README
burningTyger authored
1391 [dump_errors] Fehler im Log anzeigen.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1392
604e747 @burningTyger update German README
burningTyger authored
1393 [environment] Momentane Umgebung. Standardmäßig auf
1394 <tt>content_type</tt> oder <tt>"development"</tt>
1395 eingestellt, soweit ersteres nicht vorhanden.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1396
604e747 @burningTyger update German README
burningTyger authored
1397 [logging] Den Logger verwenden.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1398
604e747 @burningTyger update German README
burningTyger authored
1399 [lock] Jeder Request wird gelocked. Es kann nur ein Request
1400 pro Ruby-Prozess gleichzeitig verarbeitet werden.
f265aab @burningTyger updated German README
burningTyger authored
1401
604e747 @burningTyger update German README
burningTyger authored
1402 Eingeschaltet, wenn die Applikation threadsicher ist.
1403 Standardmäßig nicht aktiviert.
1404
1405 [method_override] Verwende <tt>_method</tt>, um put/delete-Formulardaten
1406 in Browsern zu verwenden, die dies normalerweise nicht
1407 unterstützen.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1408
604e747 @burningTyger update German README
burningTyger authored
1409 [port] Port für die Applikation. Wird nur im internen Server
1410 verwendet.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1411
f265aab @burningTyger updated German README
burningTyger authored
1412 [prefixed_redirects] Entscheidet, ob <tt>request.script_name</tt> in
1413 Redirects eingefügt wird oder nicht, wenn kein
1414 absoluter Pfad angegeben ist. Auf diese Weise verhält
604e747 @burningTyger update German README
burningTyger authored
1415 sich <tt>redirect '/foo'</tt> so, als wäre es ein
f265aab @burningTyger updated German README
burningTyger authored
1416 <tt>redirect to('/foo')</tt>. Standardmäßig nicht
604e747 @burningTyger update German README
burningTyger authored
1417 aktiviert.
f265aab @burningTyger updated German README
burningTyger authored
1418
1419 [protection] Legt fest, ob der Schutzmechanismus für häufig
1420 Vorkommende Webangriffe auf Webapplikationen aktiviert
1421 wird oder nicht. Weitere Informationen im vorhergehenden
685af47 @burningTyger add the latest and greatest to German Readme
burningTyger authored
1422 Abschnitt.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1423
d1ab58d @rkh rename public to public_folder, fixes #301
rkh authored
1424 [public_folder] Das öffentliche Verzeichnis, aus dem Daten zur
f265aab @burningTyger updated German README
burningTyger authored
1425 Verfügung gestellt werden können. Wird nur dann
1426 verwendet, wenn statische Daten zur Verfügung
1427 gestellt werden können (s.u. <tt>static</tt>
1428 Option). Leitet sich von der <tt>app_file</tt>
1429 Einstellung ab, wenn nicht gesetzt.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1430
1746084 @burningTyger update German README
burningTyger authored
1431 [public_dir] Alias für <tt>public_folder</tt>, s.o.
1432
604e747 @burningTyger update German README
burningTyger authored
1433 [reload_templates] Im development-Modus aktiviert.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1434
f265aab @burningTyger updated German README
burningTyger authored
1435 [root] Wurzelverzeichnis des Projekts. Leitet sich von der
1436 <tt>app_file</tt> Einstellung ab, wenn nicht gesetzt.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1437
f265aab @burningTyger updated German README
burningTyger authored
1438 [raise_errors] Einen Ausnahmezustand aufrufen. Beendet die
1439 Applikation. Ist automatisch aktiviert, wenn die
1440 Umgebung auf <tt>"test"</tt> eingestellt ist.
1441 Ansonsten ist diese Option deaktiviert.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1442
604e747 @burningTyger update German README
burningTyger authored
1443 [run] Wenn aktiviert, wird Sinatra versuchen, den Webserver
1444 zu starten. Nicht verwenden, wenn Rackup oder anderes
1445 verwendet werden soll.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1446
604e747 @burningTyger update German README
burningTyger authored
1447 [running] Läuft der eingebaute Server? Diese Einstellung nicht
1448 ändern!
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1449
f265aab @burningTyger updated German README
burningTyger authored
1450 [server] Server oder Liste von Servern, die als eingebaute
604e747 @burningTyger update German README
burningTyger authored
1451 Server zur Verfügung stehen.
1452 Standardmäßig auf ['thin', 'mongrel', 'webrick']
1453 voreingestellt. Die Anordnung gibt die Priorität vor.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1454
f265aab @burningTyger updated German README
burningTyger authored
1455 [sessions] Sessions auf Cookiebasis mittels
1456 <tt>Rack::Session::Cookie</tt>aktivieren. Für
1457 weitere Infos bitte in der Sektion 'Sessions
1458 verwenden' nachschauen.
1459
1460 [show_exceptions] Bei Fehlern einen Stacktrace im Browseranzeigen. Ist
1461 automatisch aktiviert, wenn die Umgebung auf
1462 <tt>"development"</tt> eingestellt ist. Ansonsten ist
1463 diese Option deaktiviert.
1746084 @burningTyger update German README
burningTyger authored
1464 Kann auch auf <tt>:after_handler</tt> gestellt werden,
1465 um eine anwendungsspezifische Fehlerbehandlung
1466 auszulösen, bevor der Fehlerverlauf im Browser
1467 angezeigt wird.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1468
604e747 @burningTyger update German README
burningTyger authored
1469 [static] Entscheidet, ob Sinatra statische Dateien zur Verfügung
1470 stellen soll oder nicht.
f265aab @burningTyger updated German README
burningTyger authored
1471 Sollte nicht aktiviert werden, wenn ein Server
1472 verwendet wird, der dies auch selbstständig erledigen
604e747 @burningTyger update German README
burningTyger authored
1473 kann. Deaktivieren wird die Performance erhöhen.
1474 Standardmäßig aktiviert.
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1475
f265aab @burningTyger updated German README
burningTyger authored
1476 [static_cache_control] Wenn Sinatra statische Daten zur Verfügung stellt,
1477 können mit dieser Einstellung die +Cache-Control+
1478 Header zu den Responses hinzugefügt werden. Die
604e747 @burningTyger update German README
burningTyger authored
1479 Einstellung verwendet dazu die +cache_control+
1480 Helfer-Methode. Standardmäßig deaktiviert.
1481 Ein Array wird verwendet, um mehrere Werte gleichzeitig
1482 zu übergeben:
f265aab @burningTyger updated German README
burningTyger authored
1483 <tt>set :static_cache_control, [:public, :max_age => 300]</tt>
1484
1485 [views] Verzeichnis der Views. Leitet sich von der
1486 <tt>app_file</tt> Einstellung ab, wenn nicht gesetzt.
1487
1488 == Umgebungen
1489
1490 Es gibt drei voreingestellte Umgebungen in Sinatra: <tt>"development"</tt>,
1491 <tt>"production"</tt> und <tt>"test"</tt>. Umgebungen können über die
1492 +RACK_ENV+ Umgebungsvariable gesetzt werden. Die Standardeinstellung ist
1493 <tt>"development"</tt>. In diesem Modus werden alle Templates zwischen
1494 Requests neu geladen. Dazu gibt es besondere Fehlerseiten für 404 Stati
1495 und Fehlermeldungen. In <tt>"production"</tt> und <tt>"test"</tt> werden
1496 Templates automatisch gecached.
1497
1498 Um die Anwendung in einer anderen Umgebung auszuführen kann man die
1499 <tt>-e</tt> Option verwenden:
1500
1501 ruby my_app.rb -e [ENVIRONMENT]
9c871fe @burningTyger preliminary README.de with commented untranslated parts
burningTyger authored
1502
f265aab @burningTyger updated German README
burningTyger authored
1503 In der Anwendung kann man die die Methoden +development?+, +test?+ und