Skip to content
This repository
Newer
Older
100644 2116 lines (1525 sloc) 66.391 kb
11e1f8a9 »
2010-01-01 Add German translation of the README
1 = Sinatra
7949da74 »
2011-03-18 German readme update and fixes
2
d59a98ce »
2011-02-21 remove trailing whitespaces
3 <i>Wichtig: Dieses Dokument ist eine Übersetzung aus dem Englischen und unter
8129ee48 »
2011-03-17 corrected and improved the german README
4 Umständen nicht auf dem aktuellen Stand.</i>
11e1f8a9 »
2010-01-01 Add German translation of the README
5
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
6 Sinatra ist eine DSL, die das schnelle Erstellen von Webanwendungen in Ruby
8129ee48 »
2011-03-17 corrected and improved the german README
7 mit minimalem Aufwand ermöglicht:
11e1f8a9 »
2010-01-01 Add German translation of the README
8
9 # myapp.rb
10 require 'sinatra'
11 get '/' do
12 'Hallo Welt!'
13 end
14
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
15 Einfach via +rubygems+ installieren und starten:
11e1f8a9 »
2010-01-01 Add German translation of the README
16
8465d492 »
2010-09-07 Avoid `require "rubygems"` and `sudo` in README.
17 gem install sinatra
18 ruby -rubygems myapp.rb
11e1f8a9 »
2010-01-01 Add German translation of the README
19
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
20 Die Seite kann nun unter http://localhost:4567 betrachtet werden.
11e1f8a9 »
2010-01-01 Add German translation of the README
21
f265aabc »
2011-12-30 updated German README
22 Es wird empfohlen, den Thin-Server via <tt>gem install thin</tt> zu
7949da74 »
2011-03-18 German readme update and fixes
23 installieren, den Sinatra dann, soweit vorhanden, automatisch verwendet.
24
11e1f8a9 »
2010-01-01 Add German translation of the README
25 == Routen
26
d59a98ce »
2011-02-21 remove trailing whitespaces
27 In Sinatra wird eine Route durch eine HTTP-Methode und ein URL-Muster
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
28 definiert. Jeder dieser Routen wird ein Ruby-Block zugeordnet:
11e1f8a9 »
2010-01-01 Add German translation of the README
29
30 get '/' do
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
31 .. zeige etwas ..
11e1f8a9 »
2010-01-01 Add German translation of the README
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
f265aabc »
2011-12-30 updated German README
45
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
46 options '/' do
c8ce7cdf »
2011-05-19 updated the German docs
47 .. zeige, was wir können ..
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
48 end
11e1f8a9 »
2010-01-01 Add German translation of the README
49
f979cb88 »
2010-09-25 typo + grammar in German README
50 Die Routen werden in der Reihenfolge durchlaufen, in der sie definiert wurden.
8129ee48 »
2011-03-17 corrected and improved the german README
51 Das erste Routen-Muster, das mit dem Request übereinstimmt, wird ausgeführt.
11e1f8a9 »
2010-01-01 Add German translation of the README
52
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
53 Die Muster der Routen können benannte Parameter beinhalten, die über den
f979cb88 »
2010-09-25 typo + grammar in German README
54 <tt>params</tt>-Hash zugänglich gemacht werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
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
8129ee48 »
2011-03-17 corrected and improved the german README
62 Man kann auf diese auch mit Block-Parametern zugreifen:
11e1f8a9 »
2010-01-01 Add German translation of the README
63
64 get '/hallo/:name' do |n|
65 "Hallo #{n}!"
66 end
67
8129ee48 »
2011-03-17 corrected and improved the german README
68 Routen-Muster können auch mit Splat- oder Wildcard-Parametern über das
69 <tt>params[:splat]</tt>-Array angesprochen werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
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
c8ce7cdf »
2011-05-19 updated the German docs
81 Oder mit Block-Parametern:
82
83 get '/download/*.*' do |pfad, endung|
84 [pfad, endung] # => ["Pfad/zu/Datei", "xml"]
85 end
f265aabc »
2011-12-30 updated German README
86
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
87 Routen mit regulären Ausdrücken sind auch möglich:
11e1f8a9 »
2010-01-01 Add German translation of the README
88
89 get %r{/hallo/([\w]+)} do
90 "Hallo, #{params[:captures].first}!"
91 end
92
8129ee48 »
2011-03-17 corrected and improved the german README
93 Und auch hier können Block-Parameter genutzt werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
94
95 get %r{/hallo/([\w]+)} do |c|
96 "Hallo, #{c}!"
97 end
98
3af1fb31 »
2011-09-01 update German Readme
99 Routen-Muster können auch mit optionalen Parametern ausgestattet werden:
100
101 get '/posts.?:format?' do
f265aabc »
2011-12-30 updated German README
102 # passt auf "GET /posts" sowie jegliche Erweiterung
3af1fb31 »
2011-09-01 update German Readme
103 # wie "GET /posts.json", "GET /posts.xml" etc.
104 end
105
685af477 »
2011-09-08 add the latest and greatest to German Readme
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
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
110 === Bedingungen
111
112 An Routen können eine Vielzahl von Bedingungen angehängt werden, die erfüllt
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
113 sein müssen, damit der Block ausgeführt wird. Möglich wäre etwa eine
8129ee48 »
2011-03-17 corrected and improved the german README
114 Einschränkung des User-Agents:
11e1f8a9 »
2010-01-01 Add German translation of the README
115
116 get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
117 "Du verwendest Songbird Version #{params[:agent][0]}"
11e1f8a9 »
2010-01-01 Add German translation of the README
118 end
119
120 get '/foo' do
121 # passt auf andere Browser
122 end
123
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
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
8129ee48 »
2011-03-17 corrected and improved the german README
138 Es können auch andere Bedingungen relativ einfach hinzugefügt werden:
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
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
f265aabc »
2011-12-30 updated German README
150 Bei Bedingungen, die mehrere Werte annehmen können, sollte ein Splat verwendet
3af1fb31 »
2011-09-01 update German Readme
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 }
f265aabc »
2011-12-30 updated German README
156 redirect "/login/", 303
3af1fb31 »
2011-09-01 update German Readme
157 end
158 end
159 end
160
161 get "/mein/account/", :auth => [:user, :admin] do
162 "Mein Account"
163 end
f265aabc »
2011-12-30 updated German README
164
3af1fb31 »
2011-09-01 update German Readme
165 get "/nur/admin/", :auth => :admin do
166 "Nur Admins dürfen hier rein!"
167 end
168
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
169 === Rückgabewerte
170
8129ee48 »
2011-03-17 corrected and improved the german README
171 Durch den Rückgabewert eines Routen-Blocks wird mindestens der Response-Body
7949da74 »
2011-03-18 German readme update and fixes
172 festgelegt, der an den HTTP-Client, bzw. die nächste Rack-Middleware,
f265aabc »
2011-12-30 updated German README
173 weitergegeben wird. Im Normalfall handelt es sich hierbei, wie in den
174 vorangehenden Beispielen zu sehen war, um einen String. Es werden allerdings
7949da74 »
2011-03-18 German readme update and fixes
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
f265aabc »
2011-12-30 updated German README
180 * Ein Array mit drei Elementen: <tt>[Status (Fixnum), Headers (Hash),
7949da74 »
2011-03-18 German readme update and fixes
181 Response-Body (antwortet auf #each)]</tt>.
182 * Ein Array mit zwei Elementen: <tt>[Status (Fixnum), Response-Body (antwortet
183 auf #each)]</tt>.
f265aabc »
2011-12-30 updated German README
184 * Ein Objekt, das auf <tt>#each</tt> antwortet und den an diese Methode
7949da74 »
2011-03-18 German readme update and fixes
185 übergebenen Block nur mit Strings als Übergabewerte aufruft.
8129ee48 »
2011-03-17 corrected and improved the german README
186 * Ein Fixnum, das den Status-Code festlegt.
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
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
3af1fb31 »
2011-09-01 update German Readme
198 Ebenso kann die +stream+-Helfer-Methode (s.u.) verwendet werden, die Streaming
199 direkt in die Route integriert.
200
f265aabc »
2011-12-30 updated German README
201 === Eigene Routen-Muster
7949da74 »
2011-03-18 German readme update and fixes
202
f265aabc »
2011-12-30 updated German README
203 Wie oben schon beschrieben, ist Sinatra von Haus aus mit Unterstützung für
8129ee48 »
2011-03-17 corrected and improved the german README
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:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
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
f265aabc »
2011-12-30 updated German README
229 Beachte, dass das obige Beispiel etwas übertrieben wirkt. Es geht auch
7949da74 »
2011-03-18 German readme update and fixes
230 einfacher:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
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
11e1f8a9 »
2010-01-01 Add German translation of the README
243 == Statische Dateien
244
8129ee48 »
2011-03-17 corrected and improved the german README
245 Statische Dateien werden aus dem <tt>./public</tt>-Ordner ausgeliefert. Es ist
d1ab58de »
2011-06-16 rename public to public_folder, fixes #301
246 möglich, einen anderen Ort zu definieren, indem man die
247 <tt>:public_folder</tt>-Option setzt:
11e1f8a9 »
2010-01-01 Add German translation of the README
248
d1ab58de »
2011-06-16 rename public to public_folder, fixes #301
249 set :public_folder, File.dirname(__FILE__) + '/static'
11e1f8a9 »
2010-01-01 Add German translation of the README
250
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
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.
11e1f8a9 »
2010-01-01 Add German translation of the README
254
604e7477 »
2011-06-09 update German README
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
8129ee48 »
2011-03-17 corrected and improved the german README
258 == Views/Templates
11e1f8a9 »
2010-01-01 Add German translation of the README
259
f265aabc »
2011-12-30 updated German README
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:
11e1f8a9 »
2010-01-01 Add German translation of the README
294
f265aabc »
2011-12-30 updated German README
295 set :haml, :format => :html5
11e1f8a9 »
2010-01-01 Add German translation of the README
296
f265aabc »
2011-12-30 updated German README
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
70bdfc72 »
2011-06-07 update README.de.rdoc
346 muss, auch dann, wenn sie sich in einem Unterordner befinden:
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
347
70bdfc72 »
2011-06-07 update README.de.rdoc
348 haml :'unterverzeichnis/template'
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
349
70bdfc72 »
2011-06-07 update README.de.rdoc
350 Rendering-Methoden rendern jeden String direkt.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
351
70bdfc72 »
2011-06-07 update README.de.rdoc
352 === Verfügbare Templatesprachen
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
353
70bdfc72 »
2011-06-07 update README.de.rdoc
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':
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
357
70bdfc72 »
2011-06-07 update README.de.rdoc
358 require 'rdiscount' # oder require 'bluecloth'
359 get('/') { markdown :index }
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
360
70bdfc72 »
2011-06-07 update README.de.rdoc
361 === Haml Templates
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
362
f0950197 »
2012-05-30 Update README links to Haml
363 Abhängigkeit:: {haml}[http://haml.info/]
17460849 »
2012-08-09 update German README
364 Dateierweiterung:: <tt>.haml</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
365 Beispiel:: <tt>haml :index, :format => :html5</tt>
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
366
70bdfc72 »
2011-06-07 update README.de.rdoc
367 === Erb Templates
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
368
70bdfc72 »
2011-06-07 update README.de.rdoc
369 Abhängigkeit:: {erubis}[http://www.kuwata-lab.com/erubis/] oder
17460849 »
2012-08-09 update German README
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>
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
374
70bdfc72 »
2011-06-07 update README.de.rdoc
375 === Builder Templates
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
376
70bdfc72 »
2011-06-07 update README.de.rdoc
377 Abhängigkeit:: {builder}[http://builder.rubyforge.org/]
17460849 »
2012-08-09 update German README
378 Dateierweiterung:: <tt>.builder</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
379 Beispiel:: <tt>builder { |xml| xml.em "Hallo" }</tt>
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
380
70bdfc72 »
2011-06-07 update README.de.rdoc
381 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
382
70bdfc72 »
2011-06-07 update README.de.rdoc
383 === Nokogiri Templates
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
384
70bdfc72 »
2011-06-07 update README.de.rdoc
385 Abhängigkeit:: {nokogiri}[http://nokogiri.org/]
17460849 »
2012-08-09 update German README
386 Dateierweiterung:: <tt>.nokogiri</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
387 Beispiel:: <tt>nokogiri { |xml| xml.em "Hallo" }</tt>
b464e024 »
2010-09-11 Add textile helper method. Tilt supports textile for quite some time …
388
70bdfc72 »
2011-06-07 update README.de.rdoc
389 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
390
70bdfc72 »
2011-06-07 update README.de.rdoc
391 === Sass Templates
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
392
70bdfc72 »
2011-06-07 update README.de.rdoc
393 Abhängigkeit:: {sass}[http://sass-lang.com/]
17460849 »
2012-08-09 update German README
394 Dateierweiterung:: <tt>.sass</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
395 Beispiel:: <tt>sass :stylesheet, :style => :expanded</tt>
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
396
70bdfc72 »
2011-06-07 update README.de.rdoc
397 === SCSS Templates
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
398
70bdfc72 »
2011-06-07 update README.de.rdoc
399 Abhängigkeit:: {sass}[http://sass-lang.com/]
17460849 »
2012-08-09 update German README
400 Dateierweiterung:: <tt>.scss</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
401 Beispiel:: <tt>scss :stylesheet, :style => :expanded</tt>
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
402
70bdfc72 »
2011-06-07 update README.de.rdoc
403 === Less Templates
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
404
70bdfc72 »
2011-06-07 update README.de.rdoc
405 Abhängigkeit:: {less}[http://www.lesscss.org/]
17460849 »
2012-08-09 update German README
406 Dateierweiterung:: <tt>.less</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
407 Beispiel:: <tt>less :stylesheet</tt>
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
408
70bdfc72 »
2011-06-07 update README.de.rdoc
409 === Liquid Templates
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
410
70bdfc72 »
2011-06-07 update README.de.rdoc
411 Abhängigkeit:: {liquid}[http://www.liquidmarkup.org/]
17460849 »
2012-08-09 update German README
412 Dateierweiterung:: <tt>.liquid</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
413 Beispiel:: <tt>liquid :index, :locals => { :key => 'Wert' }</tt>
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
414
f265aabc »
2011-12-30 updated German README
415 Da man aus dem Liquid-Template heraus keine Ruby-Methoden aufrufen kann
416 (ausgenommen +yield+), wird man üblicherweise locals verwenden wollen, mit
70bdfc72 »
2011-06-07 update README.de.rdoc
417 denen man Variablen weitergibt.
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
418
70bdfc72 »
2011-06-07 update README.de.rdoc
419 === Markdown Templates
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
420
70bdfc72 »
2011-06-07 update README.de.rdoc
421 Abhängigkeit:: {rdiscount}[https://github.com/rtomayko/rdiscount],
17460849 »
2012-08-09 update German README
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>
70bdfc72 »
2011-06-07 update README.de.rdoc
427 Beispiel:: <tt>markdown :index, :layout_engine => :erb</tt>
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
428
70bdfc72 »
2011-06-07 update README.de.rdoc
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:
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
432
70bdfc72 »
2011-06-07 update README.de.rdoc
433 erb :overview, :locals => { :text => markdown(:einfuehrung) }
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
434
70bdfc72 »
2011-06-07 update README.de.rdoc
435 Beachte, dass man die +markdown+-Methode auch aus anderen Templates heraus
436 aufrufen kann:
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
437
70bdfc72 »
2011-06-07 update README.de.rdoc
438 %h1 Gruß von Haml!
f265aabc »
2011-12-30 updated German README
439 %p= markdown(:Grüße)
c248dbac »
2010-09-12 Add rdoc helper method. Tilt supports RDoc for quite some time now, b…
440
70bdfc72 »
2011-06-07 update README.de.rdoc
441 Da man Ruby nicht von Markdown heraus aufrufen kann, können auch Layouts nicht
f265aabc »
2011-12-30 updated German README
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
70bdfc72 »
2011-06-07 update README.de.rdoc
444 <tt>:layout_engine</tt>-Option verwendet wird.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
445
70bdfc72 »
2011-06-07 update README.de.rdoc
446 === Textile Templates
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
447
70bdfc72 »
2011-06-07 update README.de.rdoc
448 Abhängigkeit:: {RedCloth}[http://redcloth.org/]
17460849 »
2012-08-09 update German README
449 Dateierweiterung:: <tt>.textile</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
450 Beispiel:: <tt>textile :index, :layout_engine => :erb</tt>
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
451
70bdfc72 »
2011-06-07 update README.de.rdoc
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:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
455
70bdfc72 »
2011-06-07 update README.de.rdoc
456 erb :overview, :locals => { :text => textile(:einfuehrung) }
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
457
70bdfc72 »
2011-06-07 update README.de.rdoc
458 Beachte, dass man die +textile+-Methode auch aus anderen Templates heraus
459 aufrufen kann:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
460
70bdfc72 »
2011-06-07 update README.de.rdoc
461 %h1 Gruß von Haml!
f265aabc »
2011-12-30 updated German README
462 %p= textile(:Grüße)
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
463
70bdfc72 »
2011-06-07 update README.de.rdoc
464 Da man Ruby nicht von Textile heraus aufrufen kann, können auch Layouts nicht
f265aabc »
2011-12-30 updated German README
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
70bdfc72 »
2011-06-07 update README.de.rdoc
467 <tt>:layout_engine</tt>-Option verwendet wird.
7cb94f2d »
2010-09-12 Add radius helper method. Tilt supports radius for quite some time no…
468
70bdfc72 »
2011-06-07 update README.de.rdoc
469 === RDoc Templates
7cb94f2d »
2010-09-12 Add radius helper method. Tilt supports radius for quite some time no…
470
70bdfc72 »
2011-06-07 update README.de.rdoc
471 Abhängigkeit:: {rdoc}[http://rdoc.rubyforge.org/]
17460849 »
2012-08-09 update German README
472 Dateierweiterung:: <tt>.rdoc</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
473 Beispiel:: <tt>textile :README, :layout_engine => :erb</tt>
7cb94f2d »
2010-09-12 Add radius helper method. Tilt supports radius for quite some time no…
474
70bdfc72 »
2011-06-07 update README.de.rdoc
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:
7cb94f2d »
2010-09-12 Add radius helper method. Tilt supports radius for quite some time no…
478
70bdfc72 »
2011-06-07 update README.de.rdoc
479 erb :overview, :locals => { :text => rdoc(:einfuehrung) }
7cb94f2d »
2010-09-12 Add radius helper method. Tilt supports radius for quite some time no…
480
70bdfc72 »
2011-06-07 update README.de.rdoc
481 Beachte, dass man die +rdoc+-Methode auch aus anderen Templates heraus
482 aufrufen kann:
8ce74b3a »
2010-09-12 Add markaby helper method. Tilt supports Markaby for quite some time …
483
70bdfc72 »
2011-06-07 update README.de.rdoc
484 %h1 Gruß von Haml!
485 %p= rdoc(:Grüße)
ca7fbe54 »
2010-11-05 Add documentation for Slim templates.
486
70bdfc72 »
2011-06-07 update README.de.rdoc
487 Da man Ruby nicht von RDoc heraus aufrufen kann, können auch Layouts nicht
f265aabc »
2011-12-30 updated German README
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
70bdfc72 »
2011-06-07 update README.de.rdoc
490 <tt>:layout_engine</tt>-Option verwendet wird.
ca7fbe54 »
2010-11-05 Add documentation for Slim templates.
491
70bdfc72 »
2011-06-07 update README.de.rdoc
492 === Radius Templates
ca7fbe54 »
2010-11-05 Add documentation for Slim templates.
493
70bdfc72 »
2011-06-07 update README.de.rdoc
494 Abhängigkeit:: {radius}[http://radius.rubyforge.org/]
17460849 »
2012-08-09 update German README
495 Dateierweiterung:: <tt>.radius</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
496 Beispiel:: <tt>radius :index, :locals => { :key => 'Wert' }</tt>
ca7fbe54 »
2010-11-05 Add documentation for Slim templates.
497
70bdfc72 »
2011-06-07 update README.de.rdoc
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.
ca7fbe54 »
2010-11-05 Add documentation for Slim templates.
500
70bdfc72 »
2011-06-07 update README.de.rdoc
501 === Markaby Templates
8ce74b3a »
2010-09-12 Add markaby helper method. Tilt supports Markaby for quite some time …
502
70bdfc72 »
2011-06-07 update README.de.rdoc
503 Abhängigkeit:: {markaby}[http://markaby.github.com/]
17460849 »
2012-08-09 update German README
504 Dateierweiterung:: <tt>.mab</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
505 Beispiel:: <tt>markaby { h1 "Willkommen!" }</tt>
9ce9e543 »
2011-04-15 add support for creole templates
506
70bdfc72 »
2011-06-07 update README.de.rdoc
507 Nimmt ebenso einen Block für Inline-Templates entgegen (siehe Beispiel).
9ce9e543 »
2011-04-15 add support for creole templates
508
17460849 »
2012-08-09 update German README
509 === RABL Templates
9ce9e543 »
2011-04-15 add support for creole templates
510
5bf54d51 »
2012-05-31 Adding RABL support
511 Abhängigkeit:: {rabl}[https://github.com/nesquena/rabl]
17460849 »
2012-08-09 update German README
512 Dateierweiterung:: <tt>.rabl</tt>
5bf54d51 »
2012-05-31 Adding RABL support
513 Beispiel:: <tt>rabl :index</tt>
514
515 === Slim Templates
516
70bdfc72 »
2011-06-07 update README.de.rdoc
517 Abhängigkeit:: {slim}[http://slim-lang.com/]
17460849 »
2012-08-09 update German README
518 Dateierweiterung:: <tt>.slim</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
519 Beispiel:: <tt>slim :index</tt>
9ce9e543 »
2011-04-15 add support for creole templates
520
70bdfc72 »
2011-06-07 update README.de.rdoc
521 === Creole Templates
9ce9e543 »
2011-04-15 add support for creole templates
522
70bdfc72 »
2011-06-07 update README.de.rdoc
523 Abhängigkeit:: {creole}[https://github.com/minad/creole]
17460849 »
2012-08-09 update German README
524 Dateierweiterung:: <tt>.creole</tt>
70bdfc72 »
2011-06-07 update README.de.rdoc
525 Beispiel:: <tt>creole :wiki, :layout_engine => :erb</tt>
f58d015b »
2010-09-12 Add coffee helper method. Tilt supports CoffeeScript again, but it wa…
526
70bdfc72 »
2011-06-07 update README.de.rdoc
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:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
530
70bdfc72 »
2011-06-07 update README.de.rdoc
531 erb :overview, :locals => { :text => creole(:einfuehrung) }
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
532
70bdfc72 »
2011-06-07 update README.de.rdoc
533 Beachte, dass man die +creole+-Methode auch aus anderen Templates heraus
534 aufrufen kann:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
535
70bdfc72 »
2011-06-07 update README.de.rdoc
536 %h1 Gruß von Haml!
537 %p= creole(:Grüße)
f58d015b »
2010-09-12 Add coffee helper method. Tilt supports CoffeeScript again, but it wa…
538
70bdfc72 »
2011-06-07 update README.de.rdoc
539 Da man Ruby nicht von Creole heraus aufrufen kann, können auch Layouts nicht
f265aabc »
2011-12-30 updated German README
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
70bdfc72 »
2011-06-07 update README.de.rdoc
542 <tt>:layout_engine</tt>-Option verwendet wird.
f58d015b »
2010-09-12 Add coffee helper method. Tilt supports CoffeeScript again, but it wa…
543
70bdfc72 »
2011-06-07 update README.de.rdoc
544 === CoffeeScript Templates
f58d015b »
2010-09-12 Add coffee helper method. Tilt supports CoffeeScript again, but it wa…
545
70bdfc72 »
2011-06-07 update README.de.rdoc
546 Abhängigkeit:: {coffee-script}[https://github.com/josh/ruby-coffee-script]
3af1fb31 »
2011-09-01 update German Readme
547 und eine {Möglichkeit JavaScript auszuführen}[https://github.com/sstephenson/execjs/blob/master/README.md#readme]
17460849 »
2012-08-09 update German README
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.
f58d015b »
2010-09-12 Add coffee helper method. Tilt supports CoffeeScript again, but it wa…
560
70bdfc72 »
2011-06-07 update README.de.rdoc
561 === Eingebettete Templates
11e1f8a9 »
2010-01-01 Add German translation of the README
562
563 get '/' do
564 haml '%div.title Hallo Welt'
565 end
566
70bdfc72 »
2011-06-07 update README.de.rdoc
567 Rendert den eingebetteten Template-String.
11e1f8a9 »
2010-01-01 Add German translation of the README
568
569 === Auf Variablen in Templates zugreifen
570
f265aabc »
2011-12-30 updated German README
571 Templates werden in demselben Kontext ausgeführt wie Routen. Instanzvariablen
7949da74 »
2011-03-18 German readme update and fixes
572 in Routen sind auch direkt im Template verfügbar:
11e1f8a9 »
2010-01-01 Add German translation of the README
573
574 get '/:id' do
575 @foo = Foo.find(params[:id])
576 haml '%h1= @foo.name'
577 end
578
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
579 Oder durch einen expliziten Hash von lokalen Variablen:
11e1f8a9 »
2010-01-01 Add German translation of the README
580
581 get '/:id' do
582 foo = Foo.find(params[:id])
c8ce7cdf »
2011-05-19 updated the German docs
583 haml '%h1= bar.name', :locals => { :bar => foo }
11e1f8a9 »
2010-01-01 Add German translation of the README
584 end
585
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
586 Dies wird typischerweise bei Verwendung von Subtemplates (partials) in anderen
11e1f8a9 »
2010-01-01 Add German translation of the README
587 Templates eingesetzt.
588
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
589 === Inline-Templates
11e1f8a9 »
2010-01-01 Add German translation of the README
590
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
591 Templates können auch am Ende der Datei definiert werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
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
8129ee48 »
2011-03-17 corrected and improved the german README
608 Anmerkung: Inline-Templates, die in der Datei definiert sind, die <tt>require
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
609 'sinatra'</tt> aufruft, werden automatisch geladen. Um andere Inline-Templates
f265aabc »
2011-12-30 updated German README
610 in anderen Dateien aufzurufen, muss explizit <tt>enable :inline_templates</tt>
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
611 verwendet werden.
11e1f8a9 »
2010-01-01 Add German translation of the README
612
613 === Benannte Templates
614
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
615 Templates können auch mit der Top-Level <tt>template</tt>-Methode definiert
11e1f8a9 »
2010-01-01 Add German translation of the README
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
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
630 Wenn ein Template mit dem Namen "layout" existiert, wird es bei jedem Aufruf
f265aabc »
2011-12-30 updated German README
631 verwendet. Durch <tt>:layout => false</tt> kann das Ausführen verhindert
7949da74 »
2011-03-18 German readme update and fixes
632 werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
633
634 get '/' do
c8ce7cdf »
2011-05-19 updated the German docs
635 haml :index, :layout => request.xhr?
11e1f8a9 »
2010-01-01 Add German translation of the README
636 end
637
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
638 === Dateiendungen zuordnen
11e1f8a9 »
2010-01-01 Add German translation of the README
639
f265aabc »
2011-12-30 updated German README
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
7949da74 »
2011-03-18 German readme update and fixes
643 bewerkstelligen:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
644
645 Tilt.register :tt, Tilt[:textile]
646
8129ee48 »
2011-03-17 corrected and improved the german README
647 === Eine eigene Template-Engine hinzufügen
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
648
f265aabc »
2011-12-30 updated German README
649 Zu allererst muss die Engine bei Tilt registriert und danach eine
8129ee48 »
2011-03-17 corrected and improved the german README
650 Rendering-Methode erstellt werden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
651
0004c8e1 »
2011-02-20 translating "Datieendungen zuordnen" and "Adding Your Own Template En…
652 Tilt.register :mtt, MeineTolleTemplateEngine
11e1f8a9 »
2010-01-01 Add German translation of the README
653
654 helpers do
0004c8e1 »
2011-02-20 translating "Datieendungen zuordnen" and "Adding Your Own Template En…
655 def mtt(*args) render(:mtt, *args) end
11e1f8a9 »
2010-01-01 Add German translation of the README
656 end
657
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
658 get '/' do
0004c8e1 »
2011-02-20 translating "Datieendungen zuordnen" and "Adding Your Own Template En…
659 mtt :index
11e1f8a9 »
2010-01-01 Add German translation of the README
660 end
661
0004c8e1 »
2011-02-20 translating "Datieendungen zuordnen" and "Adding Your Own Template En…
662 Dieser Code rendert <tt>./views/application.mtt</tt>. Siehe
f265aabc »
2011-12-30 updated German README
663 github.com/rtomayko/tilt[https://github.com/rtomayko/tilt], um mehr über Tilt
7949da74 »
2011-03-18 German readme update and fixes
664 zu lernen.
665
11e1f8a9 »
2010-01-01 Add German translation of the README
666 == Filter
667
f265aabc »
2011-12-30 updated German README
668 Before-Filter werden vor jedem Request in demselben Kontext, wie danach die
7949da74 »
2011-03-18 German readme update and fixes
669 Routen, ausgeführt. So können etwa Request und Antwort geändert werden.
8129ee48 »
2011-03-17 corrected and improved the german README
670 Gesetzte Instanzvariablen in Filtern können in Routen und Templates verwendet
671 werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
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
8129ee48 »
2011-03-17 corrected and improved the german README
683 After-Filter werden nach jedem Request in demselben Kontext ausgeführt und
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
684 können ebenfalls Request und Antwort ändern. In Before-Filtern gesetzte
8129ee48 »
2011-03-17 corrected and improved the german README
685 Instanzvariablen können in After-Filtern verwendet werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
686
687 after do
688 puts response.status
689 end
690
8129ee48 »
2011-03-17 corrected and improved the german README
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:
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
693
694 before '/protected/*' do
695 authenticate!
696 end
697
698 after '/create/:slug' do |slug|
699 session[:last_slug] = slug
700 end
701
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
702 Ähnlich wie Routen können Filter auch mit weiteren Bedingungen eingeschränkt
703 werden:
7a9101a9 »
2010-11-03 Like routes, filters now also take conditions:
704
705 before :agent => /Songbird/ do
706 # ...
707 end
f265aabc »
2011-12-30 updated German README
708
7a9101a9 »
2010-11-03 Like routes, filters now also take conditions:
709 after '/blog/*', :host_name => 'example.com' do
710 # ...
711 end
712
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
713 == Helfer
714
8129ee48 »
2011-03-17 corrected and improved the german README
715 Durch die Top-Level <tt>helpers</tt>-Methode werden sogenannte Helfer-Methoden
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
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
8129ee48 »
2011-03-17 corrected and improved the german README
728 === Sessions verwenden
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
729 Sessions werden verwendet, um Zustände zwischen den Requests zu speichern.
8129ee48 »
2011-03-17 corrected and improved the german README
730 Sind sie aktiviert, kann ein Session-Hash je Benutzer-Session verwendet werden.
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
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
8129ee48 »
2011-03-17 corrected and improved the german README
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:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
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
d5515752 »
2011-03-15 improve German readme
758 Um die Sicherheit zu erhöhen, werden Cookies, die Session-Daten führen, mit
8129ee48 »
2011-03-17 corrected and improved the german README
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:
b23d9dd3 »
2011-03-14 update German readme with session secret
763
764 set :session_secret, 'super secret'
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
765
54fb37fd »
2011-04-01 complete update for README.de.rdoc
766 Zur weiteren Konfiguration kann man einen Hash mit Optionen in den +sessions+
767 Einstellungen ablegen.
768
769 set :sessions, :domain => 'foo.com'
770
11e1f8a9 »
2010-01-01 Add German translation of the README
771 == Anhalten
772
8129ee48 »
2011-03-17 corrected and improved the german README
773 Zum sofortigen Stoppen eines Request in einem Filter oder einer Route:
11e1f8a9 »
2010-01-01 Add German translation of the README
774
775 halt
776
8129ee48 »
2011-03-17 corrected and improved the german README
777 Der Status kann beim Stoppen auch angegeben werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
778
779 halt 410
780
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
781 Oder auch den Response-Body:
11e1f8a9 »
2010-01-01 Add German translation of the README
782
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
783 halt 'Hier steht der Body'
11e1f8a9 »
2010-01-01 Add German translation of the README
784
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
785 Oder beides:
11e1f8a9 »
2010-01-01 Add German translation of the README
786
787 halt 401, 'verschwinde!'
788
8129ee48 »
2011-03-17 corrected and improved the german README
789 Sogar mit Headern:
11e1f8a9 »
2010-01-01 Add German translation of the README
790
791 halt 402, {'Content-Type' => 'text/plain'}, 'Rache'
792
8129ee48 »
2011-03-17 corrected and improved the german README
793 Natürlich ist es auch möglich, ein Template mit +halt+ zu verwenden:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
794
795 halt erb(:error)
796
11e1f8a9 »
2010-01-01 Add German translation of the README
797 == Weiterspringen
798
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
799 Eine Route kann mittels <tt>pass</tt> zu der nächsten passenden Route springen:
11e1f8a9 »
2010-01-01 Add German translation of the README
800
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
801 get '/raten/:wer' do
802 pass unless params[:wer] == 'Frank'
11e1f8a9 »
2010-01-01 Add German translation of the README
803 'Du hast mich!'
804 end
805
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
806 get '/raten/*' do
7949da74 »
2011-03-18 German readme update and fixes
807 'Du hast mich nicht!'
11e1f8a9 »
2010-01-01 Add German translation of the README
808 end
809
810 Der Block wird sofort verlassen und es wird nach der nächsten treffenden Route
8129ee48 »
2011-03-17 corrected and improved the german README
811 gesucht. Ein 404-Fehler wird zurückgegeben, wenn kein treffendes Routen-Muster
11e1f8a9 »
2010-01-01 Add German translation of the README
812 gefunden wird.
813
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
814 === Eine andere Route ansteuern
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
815
d59a98ce »
2011-02-21 remove trailing whitespaces
816 Manchmal entspricht +pass+ nicht den Anforderungen, wenn das Ergebnis einer
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
817 anderen Route gefordert wird. Um das zu erreichen, lässt sich +call+ nutzen:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
818
819 get '/foo' do
66f12561 »
2011-04-17 env is accessable directly, no need to use request.env
820 status, headers, body = call env.merge("PATH_INFO" => '/bar')
039675f4 »
2011-04-17 test and fix #call example
821 [status, headers, body.map(&:upcase)]
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
822 end
823
824 get '/bar' do
825 "bar"
826 end
827
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
828 Beachte, dass in dem oben angegeben Beispiel die Performance erheblich erhöht
f265aabc »
2011-12-30 updated German README
829 werden kann, wenn <tt>"bar"</tt> in eine Helfer-Methode umgewandelt wird, auf
7949da74 »
2011-03-18 German readme update and fixes
830 die <tt>/foo</tt> und <tt>/bar</tt> zugreifen können.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
831
8129ee48 »
2011-03-17 corrected and improved the german README
832 Wenn der Request innerhalb derselben Applikations-Instanz aufgerufen und keine
7949da74 »
2011-03-18 German readme update and fixes
833 Kopie der Instanz erzeugt werden soll, kann <tt>call!</tt> anstelle von
8129ee48 »
2011-03-17 corrected and improved the german README
834 +call+ verwendet werden.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
835
8129ee48 »
2011-03-17 corrected and improved the german README
836 Die Rack-Spezifikationen enthalten weitere Informationen zu +call+.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
837
8129ee48 »
2011-03-17 corrected and improved the german README
838 === Body, Status-Code und Header setzen
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
839
8129ee48 »
2011-03-17 corrected and improved the german README
840 Es ist möglich und empfohlen, den Status-Code sowie den Response-Body mit einem
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
841 Returnwert in der Route zu setzen. In manchen Situationen kann es jedoch sein,
d59a98ce »
2011-02-21 remove trailing whitespaces
842 dass der Body an irgendeiner anderen Stelle während der Ausführung gesetzt
8129ee48 »
2011-03-17 corrected and improved the german README
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:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
845
846 get '/foo' do
847 body "bar"
848 end
f265aabc »
2011-12-30 updated German README
849
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
850 after do
851 puts body
852 end
853
8129ee48 »
2011-03-17 corrected and improved the german README
854 Ebenso ist es möglich, einen Block an +body+ weiterzureichen, der dann vom
f265aabc »
2011-12-30 updated German README
855 Rack-Handler ausgeführt wird (lässt sich z.B. zur Umsetzung von Streaming
7949da74 »
2011-03-18 German readme update and fixes
856 einsetzen, siehe auch "Rückgabewerte").
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
857
8129ee48 »
2011-03-17 corrected and improved the german README
858 Vergleichbar mit +body+ lassen sich auch Status-Code und Header setzen:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
859
860 get '/foo' do
861 status 418
f733dd73 »
2011-02-21 Translate README to German up to b40d8ca
862 headers \
9f692321 »
2011-08-09 fix teapot example
863 "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
f733dd73 »
2011-02-21 Translate README to German up to b40d8ca
864 "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
865 halt "Ich bin ein Teekesselchen"
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
866 end
867
8129ee48 »
2011-03-17 corrected and improved the german README
868 Genau wie bei +body+ liest ein Aufrufen von +headers+ oder +status+ ohne
f733dd73 »
2011-02-21 Translate README to German up to b40d8ca
869 Argumente den aktuellen Wert aus.
870
3af1fb31 »
2011-09-01 update German Readme
871 === Response-Streams
872
f265aabc »
2011-12-30 updated German README
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
3af1fb31 »
2011-09-01 update German Readme
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
f265aabc »
2011-12-30 updated German README
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.
3af1fb31 »
2011-09-01 update German Readme
894
895 Es ist zu beachten, dass das Verhalten beim Streaming, insbesondere die Anzahl
f265aabc »
2011-12-30 updated German README
896 nebenläufiger Anfragen, stark davon abhängt, welcher Webserver für die
3af1fb31 »
2011-09-01 update German Readme
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
f265aabc »
2011-12-30 updated German README
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.
3af1fb31 »
2011-09-01 update German Readme
902
903 Ist der optionale Parameter +keep_open+ aktiviert, wird beim gestreamten Objekt
f265aabc »
2011-12-30 updated German README
904 +close+ nicht aufgerufen und es ist einem überlassen dies an einem beliebigen
3af1fb31 »
2011-09-01 update German Readme
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
f265aabc »
2011-12-30 updated German README
922
54fb37fd »
2011-04-01 complete update for README.de.rdoc
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
f265aabc »
2011-12-30 updated German README
942 configure :production, :development do
54fb37fd »
2011-04-01 complete update for README.de.rdoc
943 enable :logging
944 end
945 end
946
f265aabc »
2011-12-30 updated German README
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
f733dd73 »
2011-02-21 Translate README to German up to b40d8ca
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
c8ce7cdf »
2011-05-19 updated the German docs
959 configure do
960 mime_type :foo, 'text/foo'
961 end
f265aabc »
2011-12-30 updated German README
962
8129ee48 »
2011-03-17 corrected and improved the german README
963 Es kann aber auch der +content_type+-Helfer verwendet werden:
f733dd73 »
2011-02-21 Translate README to German up to b40d8ca
964
965 get '/' do
966 content_type :foo
967 "foo foo foo"
968 end
969
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
970 === URLs generieren
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
971
f265aabc »
2011-12-30 updated German README
972 Zum Generieren von URLs sollte die +url+-Helfer-Methode genutzen werden, so
7949da74 »
2011-03-18 German readme update and fixes
973 z.B. beim Einsatz von Haml:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
974
975 %a{:href => url('/foo')} foo
976
8129ee48 »
2011-03-17 corrected and improved the german README
977 Soweit vorhanden, wird Rücksicht auf Proxys und Rack-Router genommen.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
978
8129ee48 »
2011-03-17 corrected and improved the german README
979 Diese Methode ist ebenso über das Alias +to+ zu erreichen (siehe Beispiel
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
980 unten).
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
981
8129ee48 »
2011-03-17 corrected and improved the german README
982 === Browser-Umleitung
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
983
8129ee48 »
2011-03-17 corrected and improved the german README
984 Eine Browser-Umleitung kann mithilfe der +redirect+-Helfer-Methode erreicht
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
985 werden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
986
987 get '/foo' do
988 redirect to('/bar')
989 end
990
8129ee48 »
2011-03-17 corrected and improved the german README
991 Weitere Parameter werden wie Argumente der +halt+-Methode behandelt:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
992
993 redirect to('/bar'), 303
7949da74 »
2011-03-18 German readme update and fixes
994 redirect 'http://google.com', 'Hier bist du falsch'
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
995
f265aabc »
2011-12-30 updated German README
996 Ebenso leicht lässt sich ein Schritt zurück mit dem Alias
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
997 <tt>redirect back</tt> erreichen:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
998
999 get '/foo' do
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1000 "<a href='/bar'>mach was</a>"
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1001 end
1002
1003 get '/bar' do
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1004 mach_was
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1005 redirect back
1006 end
1007
8129ee48 »
2011-03-17 corrected and improved the german README
1008 Um Argumente an ein Redirect weiterzugeben, können sie entweder dem Query
1009 übergeben:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1010
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1011 redirect to('/bar?summe=42')
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1012
8129ee48 »
2011-03-17 corrected and improved the german README
1013 oder eine Session verwendet werden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1014
e6ab1e80 »
2011-08-23 fix readme: enable :session => enable :sessions
1015 enable :sessions
f265aabc »
2011-12-30 updated German README
1016
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1017 get '/foo' do
1018 session[:secret] = 'foo'
1019 redirect to('/bar')
1020 end
f265aabc »
2011-12-30 updated German README
1021
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1022 get '/bar' do
1023 session[:secret]
1024 end
1025
868aa644 »
2011-04-19 de translation for cache control
1026
1027 === Cache einsetzen
1028
8bb842f8 »
2011-04-19 improve German readme
1029 Ein sinnvolles Einstellen von Header-Daten ist die Grundlage für ein
868aa644 »
2011-04-19 de translation for cache control
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
3af1fb31 »
2011-09-01 update German Readme
1052 Um alles richtig zu machen, sollten auch +etag+ oder +last_modified+ verwendet
868aa644 »
2011-04-19 de translation for cache control
1053 werden. Es wird empfohlen, dass diese Helfer aufgerufen werden *bevor* die
8bb842f8 »
2011-04-19 improve German readme
1054 eigentliche Arbeit anfängt, da sie sofort eine Antwort senden, wenn der
868aa644 »
2011-04-19 de translation for cache control
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
8bb842f8 »
2011-04-19 improve German readme
1064 ebenso ist es möglich einen
868aa644 »
2011-04-19 de translation for cache control
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
f265aabc »
2011-12-30 updated German README
1070 notwendigen Informationen an den Cache weiter. Für schnelle Reverse-Proxy
1071 Cache-Lösungen bietet sich z.B.
3af1fb31 »
2011-09-01 update German Readme
1072 {rack-cache}[http://rtomayko.github.com/rack-cache/] an:
868aa644 »
2011-04-19 de translation for cache control
1073
1074 require "rack/cache"
1075 require "sinatra"
f265aabc »
2011-12-30 updated German README
1076
868aa644 »
2011-04-19 de translation for cache control
1077 use Rack::Cache
f265aabc »
2011-12-30 updated German README
1078
868aa644 »
2011-04-19 de translation for cache control
1079 get '/' do
1080 cache_control :public, :max_age => 36000
1081 sleep 5
1082 "hello"
1083 end
f265aabc »
2011-12-30 updated German README
1084
604e7477 »
2011-06-09 update German README
1085 Um den <tt>Cache-Control</tt>-Header mit Informationen zu versorgen, verwendet
f265aabc »
2011-12-30 updated German README
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
868aa644 »
2011-04-19 de translation for cache control
1106
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1107 === Dateien versenden
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1108
8129ee48 »
2011-03-17 corrected and improved the german README
1109 Zum Versenden von Dateien kann die <tt>send_file</tt>-Helfer-Methode verwendet
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1110 werden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1111
1112 get '/' do
1113 send_file 'foo.png'
1114 end
1115
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1116 Für <tt>send_file</tt> stehen einige Hash-Optionen zur Verfügung:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1117
1118 send_file 'foo.png', :type => :jpg
1119
1120 [filename]
8129ee48 »
2011-03-17 corrected and improved the german README
1121 Dateiname als Response. Standardwert ist der eigentliche Dateiname.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1122
1123 [last_modified]
8129ee48 »
2011-03-17 corrected and improved the german README
1124 Wert für den Last-Modified-Header, Standardwert ist +mtime+ der Datei.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1125
1126 [type]
8129ee48 »
2011-03-17 corrected and improved the german README
1127 Content-Type, der verwendet werden soll. Wird, wenn nicht angegeben, von der
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1128 Dateiendung abgeleitet.
f265aabc »
2011-12-30 updated German README
1129
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1130 [disposition]
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1131 Verwendet für Content-Disposition. Mögliche Werte sind: +nil+ (Standard),
8129ee48 »
2011-03-17 corrected and improved the german README
1132 <tt>:attachment</tt> und <tt>:inline</tt>.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1133
1134 [length]
8129ee48 »
2011-03-17 corrected and improved the german README
1135 Content-Length-Header. Standardwert ist die Dateigröße.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1136
8129ee48 »
2011-03-17 corrected and improved the german README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1141
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1142 == Das Request-Objekt
1143
8129ee48 »
2011-03-17 corrected and improved the german README
1144 Auf das +request+-Objekt der eigehenden Anfrage kann vom Anfrage-Scope aus
1145 zugegriffen werden:
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1146
1147 # App läuft unter http://example.com/example
1148 get '/foo' do
54fb37fd »
2011-04-01 complete update for README.de.rdoc
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
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1176 end
1177
8129ee48 »
2011-03-17 corrected and improved the german README
1178 Manche Optionen, wie etwa <tt>script_name</tt> oder <tt>path_info</tt>, sind
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1179 auch schreibbar:
1180
1181 before { request.path_info = "/" }
f265aabc »
2011-12-30 updated German README
1182
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1183 get "/" do
1184 "Alle Anfragen kommen hier an!"
1185 end
1186
8129ee48 »
2011-03-17 corrected and improved the german README
1187 Der <tt>request.body</tt> ist ein IO- oder StringIO-Objekt:
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1188
1189 post "/api" do
8129ee48 »
2011-03-17 corrected and improved the german README
1190 request.body.rewind # falls schon jemand davon gelesen hat
4595a1e1 »
2010-10-13 Add Scopes, Middleware and Request sections to German README.
1191 daten = JSON.parse request.body.read
1192 "Hallo #{daten['name']}!"
1193 end
1194
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
1195 === Anhänge
1196
8129ee48 »
2011-03-17 corrected and improved the german README
1197 Damit der Browser erkennt, dass ein Response gespeichert und nicht im Browser
1198 angezeigt werden soll, kann der +attachment+-Helfer verwendet werden:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
1199
1200 get '/' do
1201 attachment
1202 "Speichern!"
1203 end
1204
8129ee48 »
2011-03-17 corrected and improved the german README
1205 Ebenso kann eine Dateiname als Parameter hinzugefügt werden:
b9d49cfd »
2011-03-07 Readme[.de].rdoc update
1206
1207 get '/' do
1208 attachment "info.txt"
1209 "Speichern!"
1210 end
1211
3af1fb31 »
2011-09-01 update German Readme
1212 === Umgang mit Datum und Zeit
1213
f265aabc »
2011-12-30 updated German README
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
3af1fb31 »
2011-09-01 update German Readme
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.
f265aabc »
2011-12-30 updated German README
1224 Mit ein paar Handgriffen lässt sich diese Methode also in ihrem Verhalten
3af1fb31 »
2011-09-01 update German Readme
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
f265aabc »
2011-12-30 updated German README
1242
8129ee48 »
2011-03-17 corrected and improved the german README
1243 === Nachschlagen von Template-Dateien
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1244
8129ee48 »
2011-03-17 corrected and improved the german README
1245 Die <tt>find_template</tt>-Helfer-Methode wird genutzt, um Template-Dateien zum
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1246 Rendern aufzufinden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1247
1248 find_template settings.views, 'foo', Tilt[:haml] do |file|
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1249 puts "könnte diese hier sein: #{file}"
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1250 end
1251
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1252 Das ist zwar nicht wirklich brauchbar, aber wenn man sie überschreibt, kann sie
8129ee48 »
2011-03-17 corrected and improved the german README
1253 nützlich werden, um eigene Nachschlage-Mechanismen einzubauen. Zum Beispiel
1254 dann, wenn mehr als nur ein view-Verzeichnis verwendet werden soll:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
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
8129ee48 »
2011-03-17 corrected and improved the german README
1264 Ein anderes Beispiel wäre, verschiedene Vereichnisse für verschiedene Engines
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1265 zu verwenden:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
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
8129ee48 »
2011-03-17 corrected and improved the german README
1277 Ebensogut könnte eine Extension aber auch geschrieben und mit anderen geteilt
1278 werden!
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1279
d59a98ce »
2011-02-21 remove trailing whitespaces
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
8129ee48 »
2011-03-17 corrected and improved the german README
1282 möglichen Pfaden gesucht. Das ergibt kein Performance-Problem, da +render+
d59a98ce »
2011-02-21 remove trailing whitespaces
1283 +block+ verwendet, sobald eine Datei gefunden wurde. Ebenso werden
8129ee48 »
2011-03-17 corrected and improved the german README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1287
11e1f8a9 »
2010-01-01 Add German translation of the README
1288 == Konfiguration
1289
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
1290 Wird einmal beim Starten in jedweder Umgebung ausgeführt:
11e1f8a9 »
2010-01-01 Add German translation of the README
1291
1292 configure do
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1293 # setze eine Option
1294 set :option, 'wert'
f265aabc »
2011-12-30 updated German README
1295
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1296 # setze mehrere Optionen
1297 set :a => 1, :b => 2
f265aabc »
2011-12-30 updated German README
1298
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1299 # das gleiche wie `set :option, true`
1300 enable :option
f265aabc »
2011-12-30 updated German README
1301
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1302 # das gleiche wie `set :option, false`
1303 disable :option
f265aabc »
2011-12-30 updated German README
1304
8129ee48 »
2011-03-17 corrected and improved the german README
1305 # dynamische Einstellungen mit Blöcken
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1306 set(:css_dir) { File.join(views, 'css') }
11e1f8a9 »
2010-01-01 Add German translation of the README
1307 end
1308
8129ee48 »
2011-03-17 corrected and improved the german README
1309 Läuft nur, wenn die Umgebung (RACK_ENV-Umgebungsvariable) auf
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
1310 <tt>:production</tt> gesetzt ist:
11e1f8a9 »
2010-01-01 Add German translation of the README
1311
1312 configure :production do
1313 ...
1314 end
1315
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
1316 Läuft nur, wenn die Umgebung auf <tt>:production</tt> oder auf <tt>:test</tt>
11e1f8a9 »
2010-01-01 Add German translation of the README
1317 gesetzt ist:
1318
1319 configure :production, :test do
1320 ...
1321 end
1322
8129ee48 »
2011-03-17 corrected and improved the german README
1323 Diese Einstellungen sind über +settings+ erreichbar:
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
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
685af477 »
2011-09-08 add the latest and greatest to German Readme
1335 === Einstellung des Angriffsschutzes
1336
f265aabc »
2011-12-30 updated German README
1337 Sinatra verwendet
685af477 »
2011-09-08 add the latest and greatest to German Readme
1338 {Rack::Protection}[https://github.com/rkh/rack-protection#readme], um die
1339 Anwendung vor häufig vorkommenden Angriffen zu schützen. Diese Voreinstellung
17460849 »
2012-08-09 update German README
1340 lässt sich selbstverständlich deaktivieren, der damit verbundene
1341 Geschwindigkeitszuwachs steht aber in keinem Verhätnis zu den möglichen
1342 Risiken.
685af477 »
2011-09-08 add the latest and greatest to German Readme
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
f265aabc »
2011-12-30 updated German README
1351 Neben Strings akzeptiert <tt>:except</tt> auch Arrays, um gleich mehrere
685af477 »
2011-09-08 add the latest and greatest to German Readme
1352 Schutzmechanismen zu deaktivieren:
1353
f265aabc »
2011-12-30 updated German README
1354 set :protection, :except => [:path_traversal, :session_hijacking]
1355
2a5e5e1a »
2011-02-21 fully translated README.de.rdoc
1356 === Mögliche Einstellungen
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1357
604e7477 »
2011-06-09 update German README
1358 [absolute_redirects] Wenn ausgeschaltet, wird Sinatra relative Redirects
f265aabc »
2011-12-30 updated German README
1359 zulassen. Jedoch ist Sinatra dann nicht mehr mit RFC
1360 2616 (HTTP 1.1) konform, das nur absolute Redirects
604e7477 »
2011-06-09 update German README
1361 zulässt.
1362
1363 Sollte eingeschaltet werden, wenn die Applikation
f265aabc »
2011-12-30 updated German README
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
604e7477 »
2011-06-09 update German README
1368 Parameter +false+ angegeben.
1369
1370 Standardmäßig nicht aktiviert.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1371
604e7477 »
2011-06-09 update German README
1372 [add_charsets] Mime-Types werden hier automatisch der Helfer-Methode
1373 <tt>content_type</tt> zugeordnet.
f265aabc »
2011-12-30 updated German README
1374
604e7477 »
2011-06-09 update German README
1375 Es empfielt sich, Werte hinzuzufügen statt sie zu
1376 überschreiben:
f265aabc »
2011-12-30 updated German README
1377
604e7477 »
2011-06-09 update German README
1378 settings.add_charsets << "application/foobar"
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1379
f265aabc »
2011-12-30 updated German README
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
604e7477 »
2011-06-09 update German README
1386 Server verwendet.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1387
604e7477 »
2011-06-09 update German README
1388 [default_encoding] Das Encoding, falls keines angegeben wurde.
1389 Standardwert ist <tt>"utf-8"</tt>.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1390
604e7477 »
2011-06-09 update German README
1391 [dump_errors] Fehler im Log anzeigen.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1392
604e7477 »
2011-06-09 update German README
1393 [environment] Momentane Umgebung. Standardmäßig auf
1394 <tt>content_type</tt> oder <tt>"development"</tt>
1395 eingestellt, soweit ersteres nicht vorhanden.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1396
604e7477 »
2011-06-09 update German README
1397 [logging] Den Logger verwenden.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1398
604e7477 »
2011-06-09 update German README
1399 [lock] Jeder Request wird gelocked. Es kann nur ein Request
1400 pro Ruby-Prozess gleichzeitig verarbeitet werden.
f265aabc »
2011-12-30 updated German README
1401
604e7477 »
2011-06-09 update German README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1408
604e7477 »
2011-06-09 update German README
1409 [port] Port für die Applikation. Wird nur im internen Server
1410 verwendet.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1411
f265aabc »
2011-12-30 updated German README
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
604e7477 »
2011-06-09 update German README
1415 sich <tt>redirect '/foo'</tt> so, als wäre es ein
f265aabc »
2011-12-30 updated German README
1416 <tt>redirect to('/foo')</tt>. Standardmäßig nicht
604e7477 »
2011-06-09 update German README
1417 aktiviert.
f265aabc »
2011-12-30 updated German README
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
685af477 »
2011-09-08 add the latest and greatest to German Readme
1422 Abschnitt.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1423
d1ab58de »
2011-06-16 rename public to public_folder, fixes #301
1424 [public_folder] Das öffentliche Verzeichnis, aus dem Daten zur
f265aabc »
2011-12-30 updated German README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1430
17460849 »
2012-08-09 update German README
1431 [public_dir] Alias für <tt>public_folder</tt>, s.o.
1432
604e7477 »
2011-06-09 update German README
1433 [reload_templates] Im development-Modus aktiviert.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1434
f265aabc »
2011-12-30 updated German README
1435 [root] Wurzelverzeichnis des Projekts. Leitet sich von der
1436 <tt>app_file</tt> Einstellung ab, wenn nicht gesetzt.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1437
f265aabc »
2011-12-30 updated German README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1442
604e7477 »
2011-06-09 update German README
1443 [run] Wenn aktiviert, wird Sinatra versuchen, den Webserver
1444 zu starten. Nicht verwenden, wenn Rackup oder anderes
1445 verwendet werden soll.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1446
604e7477 »
2011-06-09 update German README
1447 [running] Läuft der eingebaute Server? Diese Einstellung nicht
1448 ändern!
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1449
f265aabc »
2011-12-30 updated German README
1450 [server] Server oder Liste von Servern, die als eingebaute
604e7477 »
2011-06-09 update German README
1451 Server zur Verfügung stehen.
1452 Standardmäßig auf ['thin', 'mongrel', 'webrick']
1453 voreingestellt. Die Anordnung gibt die Priorität vor.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1454
f265aabc »
2011-12-30 updated German README
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.
17460849 »
2012-08-09 update German README
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.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1468
604e7477 »
2011-06-09 update German README
1469 [static] Entscheidet, ob Sinatra statische Dateien zur Verfügung
1470 stellen soll oder nicht.
f265aabc »
2011-12-30 updated German README
1471 Sollte nicht aktiviert werden, wenn ein Server
1472 verwendet wird, der dies auch selbstständig erledigen
604e7477 »
2011-06-09 update German README
1473 kann. Deaktivieren wird die Performance erhöhen.
1474 Standardmäßig aktiviert.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1475
f265aabc »
2011-12-30 updated German README
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
604e7477 »
2011-06-09 update German README
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:
f265aabc »
2011-12-30 updated German README
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]
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1502
f265aabc »
2011-12-30 updated German README
1503 In der Anwendung kann man die die Methoden +development?+, +test?+ und
1504 +production?+ verwenden, um die aktuelle Umgebung zu erfahren.
9c871fe0 »
2011-02-20 preliminary README.de with commented untranslated parts
1505
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
1506 == Fehlerbehandlung
11e1f8a9 »
2010-01-01 Add German translation of the README
1507
8129ee48 »
2011-03-17 corrected and improved the german README
1508 Error-Handler laufen in demselben Kontext wie Routen und Filter, was bedeutet,
b7b43f70 »
2010-09-10 German README: Improve language and bring up to speed with English ve…
1509 dass alle Goodies wie <tt>haml</tt>, <tt>erb</tt>, <tt>halt</tt>, etc.
1510 verwendet werden können.
11e1f8a9 »
2010-01-01 Add German translation of the README
1511
1512 === Nicht gefunden
1513
8129ee48 »
2011-03-17 corrected and improved the german README
1514 Wenn eine <tt>Sinatra::NotFound</tt>-Exception geworfen wird oder der
1515 Statuscode 404 ist, wird der <tt>not_found</tt>-Handler ausgeführt:
11e1f8a9 »
2010-01-01 Add German translation of the README
1516
1517 not_found do
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
1518 'Seite kann nirgendwo gefunden werden.'
11e1f8a9 »
2010-01-01 Add German translation of the README
1519 end
1520
1521 === Fehler
1522
8129ee48 »
2011-03-17 corrected and improved the german README
1523 Der +error+-Handler wird immer ausgeführt, wenn eine Exception in einem
1524 Routen-Block oder in einem Filter geworfen wurde. Die Exception kann über die
1525 <tt>sinatra.error</tt>-Rack-Variable angesprochen werden:
11e1f8a9 »
2010-01-01 Add German translation of the README
1526
1527 error do
8129ee48 »
2011-03-17 corrected and improved the german README
1528 'Entschuldige, es gab einen hässlichen Fehler - ' + env['sinatra.error'].name
11e1f8a9 »
2010-01-01 Add German translation of the README
1529 end
1530
1531 Benutzerdefinierte Fehler:
1532
64b45ec2 »
2010-09-29 Typos fixed. Thank you for translating this document in the first pla…
1533 error MeinFehler do
66f12561 »
2011-04-17 env is accessable directly, no need to use request.env
1534 'Au weia, ' + env['sinatra.error'].message
11e1f8a9 »
2010-01-01 Add German translation of the README
1535 end
1536
1537 Dann, wenn das passiert:
1538
1539 get '/' do
7949da74 »
2011-03-18 German readme update and fixes
1540 raise MeinFehler, 'etwas Schlimmes ist passiert'