sinatra 2.2.4 → 3.0.5

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