sinatra 1.4.0.c → 1.4.0.d

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sinatra might be problematic. Click here for more details.

@@ -1,29 +1,34 @@
1
- = Sinatra
2
- <i>Fontos megjegyzés: Ez a dokumentum csak egy fordítása az angol nyelvű
3
- változat, és lehet, hogy nem naprakész.</i>
1
+ # Sinatra
2
+ *Fontos megjegyzés: Ez a dokumentum csak egy fordítása az angol nyelvű
3
+ változat, és lehet, hogy nem naprakész.*
4
4
 
5
- A Sinatra egy {DSL}[http://en.wikipedia.org/wiki/Domain-specific_language]
5
+ A Sinatra egy [DSL](http://en.wikipedia.org/wiki/Domain-specific_language)
6
6
  webalkalmazások Ruby nyelven történő fejlesztéséhez, minimális
7
7
  energiabefektetéssel:
8
8
 
9
+ ```ruby
9
10
  # myapp.rb
10
11
  require 'sinatra'
11
12
  get '/' do
12
13
  'Helló Világ!'
13
14
  end
15
+ ```
14
16
 
15
17
  Telepítsd a gem-et és indítsd el az alkalmazást a következőképpen:
16
18
 
19
+ ```ruby
17
20
  sudo gem install sinatra
18
21
  ruby myapp.rb
22
+ ```
19
23
 
20
- Az alkalmazás elérhető lesz itt: http://localhost:4567
24
+ Az alkalmazás elérhető lesz itt: `http://localhost:4567`
21
25
 
22
- == Útvonalak (routes)
26
+ ## Útvonalak (routes)
23
27
 
24
28
  A Sinatrában az útvonalat egy HTTP metódus és egy URL-re illeszkedő minta
25
29
  párosa alkotja. Minden egyes útvonalhoz tartozik egy blokk:
26
30
 
31
+ ```ruby
27
32
  get '/' do
28
33
  .. megjelenítünk valamit ..
29
34
  end
@@ -39,30 +44,36 @@ párosa alkotja. Minden egyes útvonalhoz tartozik egy blokk:
39
44
  delete '/' do
40
45
  .. törlünk valamit ..
41
46
  end
47
+ ```
42
48
 
43
49
  Az útvonalak illeszkedését a rendszer a definiálásuk sorrendjében
44
50
  ellenőrzi. Sorrendben mindig az első illeszkedő útvonalhoz tartozó metódus kerül
45
51
  meghívásra.
46
52
 
47
- Az útvonalminták tartalmazhatnak paramétereket is, melyeket a <tt>params</tt>
53
+ Az útvonalminták tartalmazhatnak paramétereket is, melyeket a `params`
48
54
  hash-ből érhetünk el:
49
55
 
56
+ ```ruby
50
57
  get '/hello/:name' do
51
58
  # illeszkedik a "GET /hello/foo" és a "GET /hello/bar" útvonalakra
52
59
  # ekkor params[:name] értéke 'foo' vagy 'bar' lesz
53
60
  "Helló #{params[:name]}!"
54
61
  end
62
+ ```
55
63
 
56
64
  A kulcsszavas argumentumokat (named parameters) blokk paraméterek útján
57
65
  is el tudod érni:
58
66
 
67
+ ```ruby
59
68
  get '/hello/:name' do |n|
60
69
  "Helló #{n}!"
61
70
  end
71
+ ```
62
72
 
63
73
  Az útvonalmintákban szerepelhetnek joker paraméterek is, melyeket a
64
- <tt>params[:splat]</tt> tömbön keresztül tudunk elérni.
74
+ `params[:splat]` tömbön keresztül tudunk elérni.
65
75
 
76
+ ```ruby
66
77
  get '/say/*/to/*' do
67
78
  # illeszkedik a /say/hello/to/world mintára
68
79
  params[:splat] # => ["hello", "world"]
@@ -72,22 +83,28 @@ Az útvonalmintákban szerepelhetnek joker paraméterek is, melyeket a
72
83
  # illeszkedik a /download/path/to/file.xml mintára
73
84
  params[:splat] # => ["path/to/file", "xml"]
74
85
  end
86
+ ```
75
87
 
76
88
  Reguláris kifejezéseket is felvehetünk az útvonalba:
77
89
 
90
+ ```ruby
78
91
  get %r{/hello/([\w]+)} do
79
92
  "Helló, #{params[:captures].first}!"
80
93
  end
94
+ ```
81
95
 
82
96
  Vagy blokk paramétereket:
83
97
 
98
+ ```ruby
84
99
  get %r{/hello/([\w]+)} do |c|
85
100
  "Helló, #{c}!"
86
101
  end
102
+ ```
87
103
 
88
104
  Az útvonalak azonban számos egyéb illeszkedési feltétel szerint is
89
105
  tervezhetők, így például az user agent karakterláncot alapul véve:
90
106
 
107
+ ```ruby
91
108
  get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
92
109
  "A Songbird #{params[:agent][0]} verzióját használod"
93
110
  end
@@ -95,140 +112,161 @@ tervezhetők, így például az user agent karakterláncot alapul véve:
95
112
  get '/foo' do
96
113
  # illeszkedik az egyéb user agentekre
97
114
  end
115
+ ```
98
116
 
99
- == Statikus állományok
117
+ ## Statikus állományok
100
118
 
101
- A statikus fájlok kiszolgálása a <tt>./public</tt> könyvtárból
119
+ A statikus fájlok kiszolgálása a `./public` könyvtárból
102
120
  történik, de természetesen más könyvtárat is megadhatsz erre a célra,
103
- mégpedig a <tt>:public_folder</tt> kapcsoló beállításával:
121
+ mégpedig a :public_folder kapcsoló beállításával:
104
122
 
105
123
  set :public_folder, File.dirname(__FILE__) + '/static'
106
124
 
107
125
  Fontos mgejegyezni, hogy a nyilvános könyvtár neve nem szerepel az URL-ben.
108
- A <tt>./public/css/style.css</tt> fájl az
109
- <tt>http://example.com/css/style.css</tt> URL-en lesz elérhető.
126
+ A ./public/css/style.css fájl az
127
+ `http://example.com/css/style.css` URL-en lesz elérhető.
110
128
 
111
- == Nézetek és Sablonok
129
+ ## Nézetek és Sablonok
112
130
 
113
- A sablonfájlokat rendszerint a <tt>./views</tt> könyvtárba helyezzük, de
131
+ A sablonfájlokat rendszerint a `./views` könyvtárba helyezzük, de
114
132
  itt is lehetőség nyílik egyéb könyvtár használatára:
115
133
 
116
134
  set :views, File.dirname(__FILE__) + '/templates'
117
135
 
118
136
  Nagyon fontos észben tartani, hogy a sablononkra mindig szimbólumokkal
119
137
  hivatkozunk, még akkor is, ha egyéb (ebben az esetben a
120
- <tt>:'subdir/template'</tt>) könyvtárban tároljuk őket. A renderelő
138
+ :'subdir/template') könyvtárban tároljuk őket. A renderelő
121
139
  metódusok minden, nekik közvetlenül átadott karakterláncot megjelenítenek.
122
140
 
123
- === Haml sablonok
141
+ ### Haml sablonok
124
142
 
125
143
  HAML sablonok rendereléséhez szükségünk lesz a haml gem-re vagy könyvtárra:
126
144
 
145
+ ```ruby
127
146
  # Importáljuk be a haml-t az alkalmazásba
128
147
  require 'haml'
129
148
 
130
149
  get '/' do
131
150
  haml :index
132
151
  end
152
+ ```
133
153
 
134
- Ez szépen lerendereli a <tt>./views/index.haml</tt> sablont.
154
+ Ez szépen lerendereli a `./views/index.haml` sablont.
135
155
 
136
- A {Haml kapcsolói}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html]
156
+ A [Haml kapcsolói](http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html)
137
157
  globálisan is beállíthatók a Sinatra konfigurációi között, lásd az
138
- {Options and Configurations}[http://www.sinatrarb.com/configuration.html] lapot.
158
+ [Options and Configurations](http://www.sinatrarb.com/configuration.html) lapot.
139
159
  A globális beállításokat lehetőségünk van felülírni metódus szinten is.
140
160
 
161
+ ```ruby
141
162
  set :haml, {:format => :html5 } # az alapértelmezett Haml formátum az :xhtml
142
163
 
143
164
  get '/' do
144
165
  haml :index, :haml_options => {:format => :html4 } # immár felülírva
145
166
  end
167
+ ```
146
168
 
147
-
148
- === Erb sablonok
169
+ ### Erb sablonok
149
170
 
150
171
  # Importáljuk be az erb-t az alkalmazásba
172
+
173
+ ```ruby
151
174
  require 'erb'
152
175
 
153
176
  get '/' do
154
177
  erb :index
155
178
  end
179
+ ```
156
180
 
157
- Ez a <tt>./views/index.erb</tt> sablont fogja lerenderelni.
181
+ Ez a `./views/index.erb` sablont fogja lerenderelni.
158
182
 
159
- === Builder sablonok
183
+ ### Builder sablonok
160
184
 
161
185
  Szükségünk lesz a builder gem-re vagy könyvtárra a builder sablonok
162
186
  rendereléséhez:
163
187
 
164
188
  # Importáljuk be a builder-t az alkalmazásba
189
+
190
+ ```ruby
165
191
  require 'builder'
166
192
 
167
193
  get '/' do
168
194
  builder :index
169
195
  end
196
+ ```
170
197
 
171
- Ez pedig a <tt>./views/index.builder</tt> állományt fogja renderelni.
198
+ Ez pedig a `./views/index.builder` állományt fogja renderelni.
172
199
 
173
- === Sass sablonok
200
+ ### Sass sablonok
174
201
 
175
202
  Sass sablonok használatához szükség lesz a haml gem-re vagy könyvtárra:
176
203
 
177
204
  # Be kell importálni a haml, vagy a sass könyvtárat
205
+
206
+ ```ruby
178
207
  require 'sass'
179
208
 
180
209
  get '/stylesheet.css' do
181
210
  sass :stylesheet
182
211
  end
212
+ ```
183
213
 
184
- Így a <tt>./views/stylesheet.sass</tt> fájl máris renderelhető.
214
+ Így a `./views/stylesheet.sass` fájl máris renderelhető.
185
215
 
186
- A {Sass kapcsolói}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html]
216
+ A [Sass kapcsolói](http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html)
187
217
  globálisan is beállíthatók a Sinatra konfigurációi között, lásd az
188
- {Options and Configurations}[http://www.sinatrarb.com/configuration.html] lapot.
218
+ [Options and Configurations](http://www.sinatrarb.com/configuration.html) lapot.
189
219
  A globális beállításokat lehetőségünk van felülírni metódus szinten is.
190
220
 
221
+ ```ruby
191
222
  set :sass, {:style => :compact } # az alapértelmezett Sass stílus a :nested
192
223
 
193
224
  get '/stylesheet.css' do
194
225
  sass :stylesheet, :sass_options => {:style => :expanded } # felülírva
195
226
  end
227
+ ```
196
228
 
229
+ ### Beágyazott sablonok
197
230
 
198
- === Beágyazott sablonok
199
-
231
+ ```ruby
200
232
  get '/' do
201
233
  haml '%div.title Helló Világ'
202
234
  end
235
+ ```
203
236
 
204
237
  Lerendereli a beágyazott sablon karakerláncát.
205
238
 
206
- === Változók elérése a sablonokban
239
+ ### Változók elérése a sablonokban
207
240
 
208
241
  A sablonok ugyanabban a kontextusban kerülnek kiértékelésre, mint az
209
242
  útvonal metódusok (route handlers). Az útvonal metódusokban megadott
210
243
  változók közvetlenül elérhetőek lesznek a sablonokban:
211
244
 
245
+ ```ruby
212
246
  get '/:id' do
213
247
  @foo = Foo.find(params[:id])
214
248
  haml '%h1= @foo.name'
215
249
  end
250
+ ```
216
251
 
217
252
  De megadhatod egy lokális változókat tartalmazó explicit hash-ben is:
218
253
 
254
+ ```ruby
219
255
  get '/:id' do
220
256
  foo = Foo.find(params[:id])
221
257
  haml '%h1= foo.name', :locals => { :foo => foo }
222
258
  end
259
+ ```
223
260
 
224
261
  Ezt leginkább akkor érdemes megtenni, ha partial-eket akarunk renderelni
225
262
  valamely más sablonból.
226
263
 
227
- === Fájlon belüli sablonok
264
+ ### Fájlon belüli sablonok
228
265
 
229
266
  Sablonokat úgy is megadhatunk, hogy egyszerűen az alkalmazás fájl
230
267
  végére begépeljük őket:
231
268
 
269
+ ```ruby
232
270
  require 'rubygems'
233
271
  require 'sinatra'
234
272
 
@@ -244,17 +282,19 @@ végére begépeljük őket:
244
282
 
245
283
  @@ index
246
284
  %div.title Helló Világ!!!!!
285
+ ```
247
286
 
248
287
  Megjegyzés: azok a fájlon belüli sablonok, amelyek az alkalmazás fájl végére
249
288
  kerülnek és függnek a sinatra könyvtártól, automatikusan betöltődnek.
250
289
  Ha ugyanezt más alkalmazásfájlban is szeretnéd megtenni, hívd meg
251
290
  a <tt>use_in_file_templates!</tt> metódust az adott fájlban.
252
291
 
253
- === Kulcsszavas sablonok
292
+ ### Kulcsszavas sablonok
254
293
 
255
294
  Sablonokat végül a felsőszintű <tt>template</tt> metódussal is
256
295
  definiálhatunk:
257
296
 
297
+ ```ruby
258
298
  template :layout do
259
299
  "%html\n =yield\n"
260
300
  end
@@ -266,21 +306,25 @@ definiálhatunk:
266
306
  get '/' do
267
307
  haml :index
268
308
  end
309
+ ```
269
310
 
270
311
  Ha létezik "layout" nevű sablon, akkor az minden esetben meghívódik, amikor
271
312
  csak egy sablon renderelésre kerül. A layoutokat ki lehet kapcsolni a
272
- <tt>:layout => false</tt> meghívásával.
313
+ `:layout => false` meghívásával.
273
314
 
315
+ ```ruby
274
316
  get '/' do
275
317
  haml :index, :layout => !request.xhr?
276
318
  end
319
+ ```
277
320
 
278
- == Helperek
321
+ ## Helperek
279
322
 
280
323
  Használd a felső szintű <tt>helpers</tt> metódust azokhoz a helper
281
324
  függvényekhez, amiket az útvonal metódusokban és a sablonokban akarsz
282
325
  használni:
283
326
 
327
+ ```ruby
284
328
  helpers do
285
329
  def bar(name)
286
330
  "#{name}bar"
@@ -290,14 +334,16 @@ használni:
290
334
  get '/:name' do
291
335
  bar(params[:name])
292
336
  end
337
+ ```
293
338
 
294
- == Szűrők (filters)
339
+ ## Szűrők (filters)
295
340
 
296
341
  Az előszűrők (before filter) az adott hívás kontextusában minden egyes
297
342
  kérés alkalmával kiértékelődnek, így módosíthatják a kérést és a
298
343
  választ egyaránt. A szűrőkbe felvett példányváltozók elérhetőek lesznek
299
344
  az útvonalakban és a sablonokban is:
300
345
 
346
+ ```rubu
301
347
  before do
302
348
  @note = 'Csá!'
303
349
  request.path_info = '/foo/bar/baz'
@@ -307,17 +353,20 @@ az útvonalakban és a sablonokban is:
307
353
  @note #=> 'Szeva!'
308
354
  params[:splat] #=> 'bar/baz'
309
355
  end
356
+ ```
310
357
 
311
358
  Az utószűrők az egyes kérések után, az adott kérés kontextusában kerülnek
312
359
  kiértékelésre, így ezek is képesek módosítani a kérést és a választ egyaránt.
313
360
  Az előszűrőkben és úvonalakban létrehozott példányváltozók elérhetőek lesznek
314
361
  az utószűrők számára:
315
362
 
363
+ ```ruby
316
364
  after do
317
365
  puts response.status
318
366
  end
367
+ ```
319
368
 
320
- == Megállítás
369
+ ## Megállítás
321
370
 
322
371
  Egy kérés szűrőben vagy útvonalban történő azonnal blokkolásához
323
372
  használd a következő parancsot:
@@ -332,11 +381,12 @@ Vagy állítsd be a HTTP státuszt és a törzset is egyszerre ...
332
381
 
333
382
  halt 401, 'menj innen!'
334
383
 
335
- == Passzolás
384
+ ## Passzolás
336
385
 
337
386
  Az útvonalak továbbadhatják a végrehajtást egy másik útvonalnak
338
- a <tt>pass</tt> függvényhívással:
387
+ a `pass` függvényhívással:
339
388
 
389
+ ```ruby
340
390
  get '/guess/:who' do
341
391
  pass unless params[:who] == 'Frici'
342
392
  "Elkaptál!"
@@ -345,90 +395,107 @@ a <tt>pass</tt> függvényhívással:
345
395
  get '/guess/*' do
346
396
  "Elhibáztál!"
347
397
  end
398
+ ```
348
399
 
349
400
  Az útvonal blokkja azonnal kilép és átadja a vezérlést a következő
350
401
  illeszkedő útvonalnak. Ha nem talál megfelelő útvonalat, a Sinatra
351
402
  egy 404-es hibával tér vissza.
352
403
 
353
- == Beállítások
404
+ ## Beállítások
354
405
 
355
406
  Csak indításkor, de minden környezetre érvényesen fusson le:
356
407
 
408
+ ```ruby
357
409
  configure do
358
410
  ...
359
411
  end
412
+ ```
360
413
 
361
414
  Csak akkor fusson le, ha a környezet (a RACK_ENV környezeti változóban)
362
- <tt>:production</tt>-ra van állítva:
415
+ `:production`-ra van állítva:
363
416
 
417
+ ```ruby
364
418
  configure :production do
365
419
  ...
366
420
  end
421
+ ```
367
422
 
368
423
  Csak akkor fusson le, ha a környezet <tt>:production</tt> vagy <tt>:test</tt>:
369
424
 
425
+ ```ruby
370
426
  configure :production, :test do
371
427
  ...
372
428
  end
429
+ ```
373
430
 
374
- == Hibakezelés
431
+ ## Hibakezelés
375
432
 
376
433
  A hibakezelők ugyanabban a kontextusban futnak le, mint az útvonalak és
377
434
  előszűrők, ezért számukra is elérhetőek mindazok a könyvtárak, amelyek
378
- az utóbbiak rendelkezésére is állnak; így például a <tt>haml</tt>,
379
- az <tt>erb</tt>, a <tt>halt</tt> stb.
435
+ az utóbbiak rendelkezésére is állnak; így például a `haml`,
436
+ az `erb`, a `halt` stb.
380
437
 
381
- === Nem található
438
+ ### Nem található
382
439
 
383
- Amikor a <tt>Sinatra::NotFound</tt> kivétel fellép, vagy a válasz HTTP
384
- státuszkódja 404-es, mindig a <tt>not_found</tt> metódus hívódik meg.
440
+ Amikor a `Sinatra::NotFound` kivétel fellép, vagy a válasz HTTP
441
+ státuszkódja 404-es, mindig a `not_found` metódus hívódik meg.
385
442
 
443
+ ```ruby
386
444
  not_found do
387
445
  'Sehol sem találom, amit keresel'
388
446
  end
447
+ ```
389
448
 
390
- === Hiba
449
+ ### Hiba
391
450
 
392
- Az +error+ metódus hívódik meg olyankor, amikor egy útvonal, blokk vagy
451
+ Az `error` metódus hívódik meg olyankor, amikor egy útvonal, blokk vagy
393
452
  előszűrő kivételt vált ki. A kivétel objektum lehívható a
394
- <tt>sinatra.error</tt> Rack változótól:
453
+ `sinatra.error` Rack változótól:
395
454
 
455
+ ```ruby
396
456
  error do
397
457
  'Elnézést, de valami szörnyű hiba lépett fel - ' + env['sinatra.error'].name
398
458
  end
459
+ ```
399
460
 
400
461
  Egyéni hibakezelés:
401
462
 
463
+ ```ruby
402
464
  error MyCustomError do
403
465
  'Szóval az van, hogy...' + env['sinatra.error'].message
404
466
  end
467
+ ```
405
468
 
406
469
  És amikor fellép:
407
470
 
471
+ ```ruby
408
472
  get '/' do
409
473
  raise MyCustomError, 'valami nem stimmel!'
410
474
  end
475
+ ```
411
476
 
412
477
  Ez fog megjelenni:
413
478
 
414
479
  Szóval az van, hogy... valami nem stimmel!
415
480
 
416
- A Sinatra speciális <tt>not_found</tt> és <tt>error</tt> hibakezelőket
481
+ A Sinatra speciális `not_found` és `error` hibakezelőket
417
482
  használ, amikor a futtatási környezet fejlesztői módba van kapcsolva.
418
483
 
419
- == Mime típusok
484
+ ## Mime típusok
420
485
 
421
- A <tt>send_file</tt> metódus használatakor, vagy statikus fájlok
486
+ A `send_file` metódus használatakor, vagy statikus fájlok
422
487
  kiszolgálásakor előfordulhat, hogy a Sinatra nem ismeri fel a fájlok
423
488
  mime típusát. Ilyenkor használd a +mime_type+ kapcsolót a fájlkiterjesztés
424
489
  bevezetéséhez:
425
490
 
491
+ ```ruby
426
492
  mime_type :foo, 'text/foo'
493
+ ```
427
494
 
428
- == Rack Middleware
495
+ ## Rack Middleware
429
496
 
430
497
  A Sinatra egy Ruby keretrendszerek számára kifejlesztett egyszerű és szabványos
431
- interfészre, a {Rack}[http://rack.rubyforge.org/] -re épül. A Rack fejlesztői
498
+ interfészre, a [Rack](http://rack.rubyforge.org/) -re épül. A Rack fejlesztői
432
499
  szempontból egyik legérdekesebb jellemzője, hogy támogatja az úgynevezett
433
500
  "middleware" elnevezésű komponenseket, amelyek beékelődnek a szerver és az
434
501
  alkalmazás közé, így képesek megfigyelni és/vagy módosítani a HTTP
@@ -436,8 +503,9 @@ kéréseket és válaszokat. Segítségükkel különféle, egységesen működ
436
503
  funkciókat építhetünk be rendszerünkbe.
437
504
 
438
505
  A Sinatra keretrendszerben gyerekjáték a Rack middleware-ek behúzása a
439
- +use+ metódus segítségével:
506
+ `use` metódus segítségével:
440
507
 
508
+ ```ruby
441
509
  require 'sinatra'
442
510
  require 'my_custom_middleware'
443
511
 
@@ -447,16 +515,19 @@ A Sinatra keretrendszerben gyerekjáték a Rack middleware-ek behúzása a
447
515
  get '/hello' do
448
516
  'Helló Világ'
449
517
  end
518
+ ```
450
519
 
451
- A +use+ metódus szemantikája megegyezik a
452
- Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] DSL-ben
520
+ A `use` metódus szemantikája megegyezik a
521
+ [Rack::Builder](http://rack.rubyforge.org/doc/classes/Rack/Builder.html) DSL-ben
453
522
  használt +use+ metóduséval (az említett DSL-t leginkább rackup állományokban
454
- használják). Hogy egy példát említsünk, a +use+ metódus elfogad
523
+ használják). Hogy egy példát említsünk, a `use` metódus elfogad
455
524
  változókat és blokkokat egyaránt, akár kombinálva is ezeket:
456
525
 
526
+ ```ruby
457
527
  use Rack::Auth::Basic do |username, password|
458
528
  username == 'admin' && password == 'titkos'
459
529
  end
530
+ ```
460
531
 
461
532
  A Rack terjesztéssel egy csomó alap middleware komponens is érkezik,
462
533
  amelyekkel a naplózás, URL útvonalak megadása, autentikáció és
@@ -464,12 +535,13 @@ munkamenet-kezelés könnyen megvalósítható. A Sinatra ezek közül elég
464
535
  sokat automatikusan felhasznál a beállításoktól függően, így ezek
465
536
  explicit betöltésével (+use+) nem kell bajlódnod.
466
537
 
467
- == Tesztelés
538
+ ## Tesztelés
468
539
 
469
540
  Sinatra teszteket bármely Rack alapú tesztelő könyvtárral vagy
470
- keretrendszerrel készíthetsz. Mi a {Rack::Test}[http://gitrdoc.com/brynary/rack-test]
541
+ keretrendszerrel készíthetsz. Mi a [Rack::Test](http://gitrdoc.com/brynary/rack-test)
471
542
  könyvtárat ajánljuk:
472
543
 
544
+ ```ruby
473
545
  require 'my_sinatra_app'
474
546
  require 'rack/test'
475
547
 
@@ -495,11 +567,12 @@ könyvtárat ajánljuk:
495
567
  assert_equal "Songbird-öt használsz!", last_response.body
496
568
  end
497
569
  end
570
+ ```
498
571
 
499
572
  Megjegyzés: A beépített Sinatra::Test és Sinatra::TestHarness osztályok
500
573
  a 0.9.2-es kiadástól kezdve elavultnak számítanak.
501
574
 
502
- == Sinatra::Base - Middleware-ek, könyvtárak és moduláris alkalmazások
575
+ ## Sinatra::Base - Middleware-ek, könyvtárak és moduláris alkalmazások
503
576
 
504
577
  Az alkalmazást felső szinten építeni megfelelhet mondjuk egy kisebb
505
578
  app esetén, ám kifejezetten károsnak bizonyulhat olyan komolyabb,
@@ -507,10 +580,12 @@ app esetén, ám kifejezetten károsnak bizonyulhat olyan komolyabb,
507
580
  middleware, Rails metal, egyszerűbb kiszolgáló komponenssel bíró
508
581
  könyvtárak vagy éppen Sinatra kiterjesztések. A felső szintű DSL
509
582
  bepiszkítja az Objektum névteret, ráadásul kisalkalmazásokra szabott
510
- beállításokat feltételez (így például egyetlen alkalmazásfájl, ./public
511
- és ./views könyvtár meglétét, naplózást, kivételkezelő oldalt stb.).
583
+ beállításokat feltételez (így például egyetlen alkalmazásfájl,
584
+ `./public`
585
+ és `./views` könyvtár meglétét, naplózást, kivételkezelő oldalt stb.).
512
586
  Itt jön a képbe a Sinatra::Base osztály:
513
587
 
588
+ ```ruby
514
589
  require 'sinatra/base'
515
590
 
516
591
  class MyApp < Sinatra::Base
@@ -521,29 +596,32 @@ Itt jön a képbe a Sinatra::Base osztály:
521
596
  'Helló Világ!'
522
597
  end
523
598
  end
599
+ ```
524
600
 
525
601
  A MyApp osztály immár önálló Rack komponensként, mondjuk Rack middleware-ként
526
602
  vagy alkalmazásként, esetleg Rails metal-ként is tud működni. Közvetlenül
527
- használhatod (+use+) vagy futtathatod (+run+) az osztályodat egy rackup
528
- konfigurációs állományban (+config.ru+), vagy egy szerverkomponenst
603
+ használhatod (`use`) vagy futtathatod (`run`) az osztályodat egy rackup
604
+ konfigurációs állományban (`config.ru`), vagy egy szerverkomponenst
529
605
  tartalmazó könyvtár vezérlésekor:
530
606
 
607
+ ```ruby
531
608
  MyApp.run! :host => 'localhost', :port => 9090
609
+ ```
532
610
 
533
611
  A Sinatra::Base gyermekosztályaiban elérhető metódusok egyúttal a felső
534
612
  szintű DSL-en keresztül is hozzáférhetők. A legtöbb felső szintű
535
613
  alkalmazás átalakítható Sinatra::Base alapú komponensekké két lépésben:
536
614
 
537
- * A fájlban nem a +sinatra+, hanem a +sinatra/base+ osztályt kell
615
+ * A fájlban nem a `sinatra`, hanem a `sinatra/base` osztályt kell
538
616
  beimportálni, mert egyébként az összes Sinatra DSL metódus a fő
539
617
  névtérbe kerül.
540
618
  * Az alkalmazás útvonalait, hibakezelőit, szűrőit és beállításait
541
619
  a Sinatra::Base osztály gyermekosztályaiban kell megadni.
542
620
 
543
- A +Sinatra::Base+ osztály igazából egy üres lap: a legtöbb funkció
621
+ A `Sinatra::Base` osztály igazából egy üres lap: a legtöbb funkció
544
622
  alapból ki van kapcsolva, beleértve a beépített szervert is. A
545
623
  beállításokkal és az egyes kapcsolók hatásával az
546
- {Options and Configuration}[http://sinatra.github.com/configuration.html] lap
624
+ [Options and Configuration](http://sinatra.github.com/configuration.html) lap
547
625
  foglalkozik.
548
626
 
549
627
  Széljegyzet: A Sinatra felső szintű DSL-je egy egyszerű delegációs
@@ -551,15 +629,17 @@ rendszerre épül. A Sinatra::Application osztály - a Sinatra::Base egy
551
629
  speciális osztályaként - fogadja az összes :get, :put, :post,
552
630
  :delete, :before, :error, :not_found, :configure és :set üzenetet,
553
631
  ami csak a felső szintre beérkezik. Érdemes utánanézned a kódban,
554
- miképp {kerül be}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25]
555
- a {Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1064]
632
+ miképp [kerül be](http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25)
633
+ a [Sinatra::Delegator mixin](http://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1064)
556
634
  a fő névtérbe.
557
635
 
558
- == Parancssori lehetőségek
636
+ ## Parancssori lehetőségek
559
637
 
560
638
  Sinatra alkalmazásokat közvetlenül futtathatunk:
561
639
 
640
+ ```
562
641
  ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-s HANDLER]
642
+ ```
563
643
 
564
644
  Az alábbi kapcsolókat ismeri fel a rendszer:
565
645
 
@@ -569,20 +649,23 @@ Az alábbi kapcsolókat ismeri fel a rendszer:
569
649
  -s # a rack szerver/handler beállítása (alapértelmezetten ez a thin)
570
650
  -x # a mutex lock bekapcsolása (alapértelmezetten ki van kapcsolva)
571
651
 
572
- == Fejlesztői változat
652
+ ## Fejlesztői változat
573
653
 
574
654
  Ha a Sinatra legfrissebb, fejlesztői változatát szeretnéd használni,
575
655
  készíts egy helyi másolatot és indítsd az alkalmazásodat úgy,
576
- hogy a <tt>sinatra/lib</tt> könyvtár elérhető legyen a
577
- <tt>LOAD_PATH</tt>-on:
656
+ hogy a `sinatra/lib` könyvtár elérhető legyen a
657
+ `LOAD_PATH`-on:
578
658
 
659
+ ```
579
660
  cd myapp
580
661
  git clone git://github.com/sinatra/sinatra.git
581
662
  ruby -Isinatra/lib myapp.rb
663
+ ```
582
664
 
583
665
  De hozzá is adhatod a <tt>sinatra/lib</tt> könyvtárat a <tt>LOAD_PATH</tt>-hoz
584
666
  az alkalmazásodban:
585
667
 
668
+ ```ruby
586
669
  $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib'
587
670
  require 'rubygems'
588
671
  require 'sinatra'
@@ -590,19 +673,22 @@ az alkalmazásodban:
590
673
  get '/about' do
591
674
  "A következő változatot futtatom " + Sinatra::VERSION
592
675
  end
676
+ ```
593
677
 
594
678
  A Sinatra frissítését később így végezheted el:
595
679
 
680
+ ```
596
681
  cd myproject/sinatra
597
682
  git pull
683
+ ```
598
684
 
599
- == További információk
685
+ ## További információk
600
686
 
601
- * {A projekt weboldala}[http://sinatra.github.com/] - Kiegészítő dokumentáció,
687
+ * [A projekt weboldala](http://sinatra.github.com/) - Kiegészítő dokumentáció,
602
688
  hírek, hasznos linkek
603
- * {Közreműködés}[http://sinatra.github.com/contributing.html] - Hibát találtál?
689
+ * [Közreműködés](http://sinatra.github.com/contributing.html) - Hibát találtál?
604
690
  Segítségre van szükséged? Foltot küldenél be?
605
- * {Lighthouse}[http://sinatra.lighthouseapp.com] - Hibakövetés és kiadások
606
- * {Twitter}[http://twitter.com/sinatra]
607
- * {Levelezőlista}[http://groups.google.com/group/sinatrarb]
608
- * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] a http://freenode.net címen
691
+ * [Lighthouse](http://sinatra.lighthouseapp.com) - Hibakövetés és kiadások
692
+ * [Twitter](http://twitter.com/sinatra)
693
+ * [Levelezőlista](http://groups.google.com/group/sinatrarb)
694
+ * [IRC: #sinatra](irc://chat.freenode.net/#sinatra) a http://freenode.net címen