sinatra 1.4.5 → 1.4.6

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.

Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHORS.md +77 -0
  3. data/CHANGES +30 -0
  4. data/Gemfile +5 -5
  5. data/README.de.md +186 -56
  6. data/README.es.md +76 -76
  7. data/README.fr.md +120 -56
  8. data/README.hu.md +19 -19
  9. data/README.ja.md +44 -46
  10. data/README.ko.md +163 -67
  11. data/README.md +151 -127
  12. data/README.pt-br.md +905 -144
  13. data/README.pt-pt.md +17 -17
  14. data/README.ru.md +88 -52
  15. data/README.zh.md +76 -68
  16. data/lib/sinatra.rb +0 -1
  17. data/lib/sinatra/base.rb +21 -15
  18. data/lib/sinatra/show_exceptions.rb +10 -4
  19. data/lib/sinatra/version.rb +1 -1
  20. data/sinatra.gemspec +1 -1
  21. data/test/asciidoctor_test.rb +2 -2
  22. data/test/base_test.rb +1 -5
  23. data/test/builder_test.rb +2 -2
  24. data/test/coffee_test.rb +8 -2
  25. data/test/compile_test.rb +1 -1
  26. data/test/contest.rb +3 -12
  27. data/test/creole_test.rb +2 -2
  28. data/test/delegator_test.rb +1 -1
  29. data/test/encoding_test.rb +1 -1
  30. data/test/erb_test.rb +1 -1
  31. data/test/extensions_test.rb +1 -1
  32. data/test/filter_test.rb +2 -2
  33. data/test/haml_test.rb +2 -2
  34. data/test/helper.rb +8 -7
  35. data/test/helpers_test.rb +6 -6
  36. data/test/integration_test.rb +3 -3
  37. data/test/less_test.rb +2 -2
  38. data/test/liquid_test.rb +3 -3
  39. data/test/mapped_error_test.rb +5 -5
  40. data/test/markaby_test.rb +2 -2
  41. data/test/markdown_test.rb +6 -3
  42. data/test/mediawiki_test.rb +2 -2
  43. data/test/middleware_test.rb +1 -1
  44. data/test/nokogiri_test.rb +2 -2
  45. data/test/rabl_test.rb +2 -2
  46. data/test/rack_test.rb +1 -1
  47. data/test/radius_test.rb +2 -2
  48. data/test/rdoc_test.rb +4 -4
  49. data/test/readme_test.rb +1 -1
  50. data/test/request_test.rb +4 -1
  51. data/test/response_test.rb +1 -1
  52. data/test/result_test.rb +2 -2
  53. data/test/route_added_hook_test.rb +1 -1
  54. data/test/routing_test.rb +7 -7
  55. data/test/sass_test.rb +3 -3
  56. data/test/scss_test.rb +2 -2
  57. data/test/server_test.rb +10 -2
  58. data/test/settings_test.rb +4 -4
  59. data/test/sinatra_test.rb +1 -1
  60. data/test/slim_test.rb +2 -2
  61. data/test/static_test.rb +2 -2
  62. data/test/streaming_test.rb +2 -2
  63. data/test/stylus_test.rb +2 -2
  64. data/test/templates_test.rb +3 -3
  65. data/test/textile_test.rb +2 -2
  66. data/test/wlang_test.rb +1 -1
  67. data/test/yajl_test.rb +2 -2
  68. metadata +10 -11
  69. data/AUTHORS +0 -61
@@ -164,8 +164,8 @@ l'intermédiaire du hash `params` :
164
164
  ``` ruby
165
165
  get '/bonjour/:nom' do
166
166
  # répond aux requêtes "GET /bonjour/foo" et "GET /bonjour/bar"
167
- # params[:nom] est 'foo' ou 'bar'
168
- "Bonjour #{params[:nom]} !"
167
+ # params['nom'] est 'foo' ou 'bar'
168
+ "Bonjour #{params['nom']} !"
169
169
  end
170
170
  ```
171
171
 
@@ -175,24 +175,24 @@ paramètres du bloc comme ceci :
175
175
  ``` ruby
176
176
  get '/bonjour/:nom' do |n|
177
177
  # répond aux requêtes "GET /bonjour/foo" et "GET /bonjour/bar"
178
- # params[:nom] est 'foo' ou 'bar'
179
- # n contient params[:nom]
178
+ # params['nom'] est 'foo' ou 'bar'
179
+ # n contient params['nom']
180
180
  "Bonjour #{n} !"
181
181
  end
182
182
  ```
183
183
 
184
184
  Une route peut contenir un splat (caractère joker), accessible par
185
- l'intermédiaire du tableau `params[:splat]` :
185
+ l'intermédiaire du tableau `params['splat']` :
186
186
 
187
187
  ``` ruby
188
188
  get '/dire/*/a/*' do
189
189
  # répond à /dire/bonjour/a/monde
190
- params[:splat] # => ["bonjour", "monde"]
190
+ params['splat'] # => ["bonjour", "monde"]
191
191
  end
192
192
 
193
193
  get '/telecharger/*.*' do
194
194
  # répond à /telecharger/chemin/vers/fichier.xml
195
- params[:splat] # => ["chemin/vers/fichier", "xml"]
195
+ params['splat'] # => ["chemin/vers/fichier", "xml"]
196
196
  end
197
197
  ```
198
198
 
@@ -207,8 +207,8 @@ end
207
207
  Une route peut aussi être définie par une expression régulière :
208
208
 
209
209
  ``` ruby
210
- get %r{/bonjour/([\w]+)} do
211
- "Bonjour, #{params[:captures].first} !"
210
+ get /\A\/bonjour\/([\w]+)\z/ do
211
+ "Bonjour, #{params['captures'].first} !"
212
212
  end
213
213
  ```
214
214
 
@@ -228,6 +228,17 @@ get '/posts.?:format?' do
228
228
  end
229
229
  ```
230
230
 
231
+ Ainsi que des paramètres d'URL :
232
+
233
+ ``` ruby
234
+ get '/posts' do
235
+ # répond à "GET /posts?titre=foo&auteur=bar"
236
+ titre = params['titre']
237
+ auteur = params['auteur']
238
+ # utilise les variables titre et auteur, ces paramètres d'URL sont optionnels pour la route /posts
239
+ end
240
+ ```
241
+
231
242
  A ce propos, à moins d'avoir désactivé la protection contre les attaques par
232
243
  "path transversal" (voir plus loin), l'URL demandée peut avoir été modifiée
233
244
  avant d'être comparée à vos routes.
@@ -239,7 +250,7 @@ Les routes peuvent définir toutes sortes de conditions, comme par exemple le
239
250
 
240
251
  ``` ruby
241
252
  get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
242
- "Vous utilisez Songbird version #{params[:agent][0]}"
253
+ "Vous utilisez Songbird version #{params['agent'][0]}"
243
254
  end
244
255
 
245
256
  get '/foo' do
@@ -588,7 +599,7 @@ get('/') { markdown :index }
588
599
  <tr>
589
600
  <td>Dépendances</td>
590
601
  <td>
591
- <a href="http://builder.rubyforge.org/" title="builder">builder</a>
602
+ <a href="https://github.com/jimweirich/builder" title="builder">builder</a>
592
603
  </td>
593
604
  </tr>
594
605
  <tr>
@@ -709,8 +720,8 @@ locales.
709
720
  <a href="https://github.com/rtomayko/rdiscount" title="RDiscount">RDiscount</a>,
710
721
  <a href="https://github.com/vmg/redcarpet" title="RedCarpet">RedCarpet</a>,
711
722
  <a href="http://deveiate.org/projects/BlueCloth" title="BlueCloth">BlueCloth</a>,
712
- <a href="http://kramdown.rubyforge.org/" title="kramdown">kramdown</a>,
713
- <a href="http://maruku.rubyforge.org/" title="maruku">maruku</a>
723
+ <a href="http://kramdown.gettalong.org/" title="kramdown">kramdown</a>,
724
+ <a href="https://github.com/bhollis/maruku" title="maruku">maruku</a>
714
725
  </td>
715
726
  </tr>
716
727
 
@@ -788,7 +799,7 @@ pour le layout en utilisant l’option `:layout_engine`.
788
799
  <table>
789
800
  <tr>
790
801
  <td>Dépendances</td>
791
- <td><a href="http://rdoc.rubyforge.org/" title="RDoc">RDoc</a></td>
802
+ <td><a href="http://rdoc.sourceforge.net/" title="RDoc">RDoc</a></td>
792
803
  </tr>
793
804
  <tr>
794
805
  <td>Extensions de fichier</td>
@@ -825,7 +836,7 @@ pour le layout en utilisant l’option `:layout_engine`.
825
836
  <table>
826
837
  <tr>
827
838
  <td>Dépendances</td>
828
- <td><a href="http://radius.rubyforge.org/" title="Radius">Radius</a></td>
839
+ <td><a href="https://github.com/jlong/radius" title="Radius">Radius</a></td>
829
840
  </tr>
830
841
  <tr>
831
842
  <td>Extensions de fichier</td>
@@ -1060,7 +1071,7 @@ gestionnaire de route sont directement accessibles dans le template :
1060
1071
 
1061
1072
  ``` ruby
1062
1073
  get '/:id' do
1063
- @foo = Foo.find(params[:id])
1074
+ @foo = Foo.find(params['id'])
1064
1075
  haml '%h1= @foo.nom'
1065
1076
  end
1066
1077
  ```
@@ -1069,7 +1080,7 @@ Alternativement, on peut passer un hash contenant des variables locales :
1069
1080
 
1070
1081
  ``` ruby
1071
1082
  get '/:id' do
1072
- foo = Foo.find(params[:id])
1083
+ foo = Foo.find(params['id'])
1073
1084
  haml '%h1= foo.nom', :locals => { :foo => foo }
1074
1085
  end
1075
1086
  ```
@@ -1217,7 +1228,7 @@ end
1217
1228
 
1218
1229
  get '/foo/*' do
1219
1230
  @note #=> 'Coucou !'
1220
- params[:splat] #=> 'bar/baz'
1231
+ params['splat'] #=> 'bar/baz'
1221
1232
  end
1222
1233
  ```
1223
1234
 
@@ -1245,7 +1256,7 @@ before '/secret/*' do
1245
1256
  end
1246
1257
 
1247
1258
  after '/faire/:travail' do |travail|
1248
- session[:dernier_travail] = travail
1259
+ session['dernier_travail'] = travail
1249
1260
  end
1250
1261
  ```
1251
1262
 
@@ -1274,7 +1285,7 @@ helpers do
1274
1285
  end
1275
1286
 
1276
1287
  get '/:nom' do
1277
- bar(params[:nom])
1288
+ bar(params['nom'])
1278
1289
  end
1279
1290
  ```
1280
1291
 
@@ -1304,11 +1315,11 @@ activées, vous avez un hash de session par session utilisateur :
1304
1315
  enable :sessions
1305
1316
 
1306
1317
  get '/' do
1307
- "valeur = " << session[:valeur].inspect
1318
+ "valeur = " << session['valeur'].inspect
1308
1319
  end
1309
1320
 
1310
1321
  get '/:value' do
1311
- session[:valeur] = params[:valeur]
1322
+ session['valeur'] = params['valeur']
1312
1323
  end
1313
1324
  ```
1314
1325
 
@@ -1323,11 +1334,11 @@ choix comme vous le feriez pour n'importe quel autre middleware :
1323
1334
  use Rack::Session::Pool, :expire_after => 2592000
1324
1335
 
1325
1336
  get '/' do
1326
- "valeur = " << session[:valeur].inspect
1337
+ "valeur = " << session['valeur'].inspect
1327
1338
  end
1328
1339
 
1329
1340
  get '/:value' do
1330
- session[:valeur] = params[:valeur]
1341
+ session['valeur'] = params['valeur']
1331
1342
  end
1332
1343
  ```
1333
1344
 
@@ -1402,7 +1413,7 @@ avec `pass` :
1402
1413
 
1403
1414
  ``` ruby
1404
1415
  get '/devine/:qui' do
1405
- pass unless params[:qui] == 'Frank'
1416
+ pass unless params['qui'] == 'Frank'
1406
1417
  "Tu m'as eu !"
1407
1418
  end
1408
1419
 
@@ -1529,19 +1540,17 @@ connexions = []
1529
1540
 
1530
1541
  get '/souscrire' do
1531
1542
  # abonne un client aux évènements du serveur
1532
- stream(:keep_open) { |out| connexions << out }
1533
-
1534
- # purge les connexions abandonnées
1535
- connexions.reject!(&:closed?)
1536
-
1537
- # compte-rendu
1538
- "abonné"
1543
+ stream(:keep_open) do |out|
1544
+ connexions << out
1545
+ # purge les connexions abandonnées
1546
+ connexions.reject!(&:closed?)
1547
+ end
1539
1548
  end
1540
1549
 
1541
1550
  post '/message' do
1542
1551
  connexions.each do |out|
1543
1552
  # prévient le client qu'un nouveau message est arrivé
1544
- out << params[:message] << "\n"
1553
+ out << params['message'] << "\n"
1545
1554
 
1546
1555
  # indique au client de se connecter à nouveau
1547
1556
  out.close
@@ -1666,12 +1675,12 @@ Ou bien utilisez une session :
1666
1675
  enable :sessions
1667
1676
 
1668
1677
  get '/foo' do
1669
- session[:secret] = 'foo'
1678
+ session['secret'] = 'foo'
1670
1679
  redirect to('/bar')
1671
1680
  end
1672
1681
 
1673
1682
  get '/bar' do
1674
- session[:secret]
1683
+ session['secret']
1675
1684
  end
1676
1685
  ```
1677
1686
 
@@ -1712,7 +1721,7 @@ si le client a déjà la version courante dans son cache :
1712
1721
 
1713
1722
  ``` ruby
1714
1723
  get '/article/:id' do
1715
- @article = Article.find params[:id]
1724
+ @article = Article.find params['id']
1716
1725
  last_modified @article.updated_at
1717
1726
  etag @article.sha1
1718
1727
  erb :article
@@ -2098,13 +2107,13 @@ set :protection, :session => true
2098
2107
 
2099
2108
  <p>Désactivé par défaut.</p></dd>
2100
2109
 
2101
- <dt>add_charsets</dt>
2110
+ <dt>add_charset</dt>
2102
2111
  <dd><p>types mime pour lesquels la méthode <tt>content_type</tt> va
2103
2112
  automatiquement ajouter l’information du <tt>charset</tt>.</p>
2104
2113
 
2105
2114
  <p>Vous devriez lui ajouter des valeurs plutôt que de l’écraser :</p>
2106
2115
 
2107
- <pre>settings.add_charsets >> "application/foobar"</pre></dd>
2116
+ <pre>settings.add_charset >> "application/foobar"</pre></dd>
2108
2117
 
2109
2118
  <dt>app_file</dt>
2110
2119
  <dd><p>chemin pour le fichier de l’application principale, utilisé pour
@@ -2283,7 +2292,7 @@ variable Rack `sinatra.error` :
2283
2292
 
2284
2293
  ``` ruby
2285
2294
  error do
2286
- 'Désolé mais une méchante erreur est survenue - ' + env['sinatra.error'].name
2295
+ 'Désolé mais une méchante erreur est survenue - ' + env['sinatra.error'].message
2287
2296
  end
2288
2297
  ```
2289
2298
 
@@ -2334,7 +2343,7 @@ Sinatra installe pour vous quelques gestionnaires `not_found` et
2334
2343
 
2335
2344
  ## Les Middlewares Rack
2336
2345
 
2337
- Sinatra tourne avec [Rack](http://rack.rubyforge.org/), une interface standard
2346
+ Sinatra tourne avec [Rack](http://rack.github.io/), une interface standard
2338
2347
  et minimale pour les web frameworks Ruby. Un des points forts de Rack est le
2339
2348
  support de ce que l'on appelle des "middlewares" -- composant qui vient se
2340
2349
  situer entre le serveur et votre application, et dont le but est de
@@ -2357,7 +2366,7 @@ end
2357
2366
  ```
2358
2367
 
2359
2368
  La sémantique de `use` est identique à celle définie dans le DSL de
2360
- [Rack::Builder](http://rack.rubyforge.org/doc/classes/Rack/Builder.html)
2369
+ [Rack::Builder](http://rubydoc.info/github/rack/rack/master/Rack/Builder)
2361
2370
  (le plus souvent utilisé dans un fichier rackup). Par exemple, la méthode
2362
2371
  `use` accepte divers arguments ainsi que des blocs :
2363
2372
 
@@ -2385,10 +2394,10 @@ recommandé :
2385
2394
 
2386
2395
  ``` ruby
2387
2396
  require 'mon_application_sinatra'
2388
- require 'test/unit'
2397
+ require 'minitest/autorun'
2389
2398
  require 'rack/test'
2390
2399
 
2391
- class MonTest < Test::Unit::TestCase
2400
+ class MonTest < Minitest::Test
2392
2401
  include Rack::Test::Methods
2393
2402
 
2394
2403
  def app
@@ -2449,7 +2458,20 @@ pour transformer la plupart des applications de haut niveau en un composant
2449
2458
  `Sinatra::Base` est une page blanche. La plupart des options sont
2450
2459
  désactivées par défaut, y compris le serveur intégré. Reportez-vous à
2451
2460
  [Options et Configuration](http://sinatra.github.com/configuration.html)
2452
- pour plus d'informations sur les options et leur fonctionnement.
2461
+ pour plus d'informations sur les options et leur fonctionnement. Si vous
2462
+ souhaitez un comportement plus proche de celui obtenu lorsque vous définissez
2463
+ votre application au niveau supérieur (aussi connu sous le nom de style
2464
+ Classique), vous pouvez créer une classe héritant de `Sinatra::Application`.
2465
+
2466
+ ``` ruby
2467
+ require 'sinatra/base'
2468
+
2469
+ class MyApp < Sinatra::Application
2470
+ get '/' do
2471
+ 'Bonjour le monde !'
2472
+ end
2473
+ end
2474
+ ```
2453
2475
 
2454
2476
  ### Style modulaire vs. style classique
2455
2477
 
@@ -2465,14 +2487,56 @@ classique et style modulaire.
2465
2487
  Si vous passez d'un style à l'autre, souvenez-vous des quelques différences
2466
2488
  mineures en ce qui concerne les paramètres par défaut :
2467
2489
 
2468
- Paramètre Classique Modulaire
2490
+ <table>
2491
+ <tr>
2492
+ <th>Paramètre</th>
2493
+ <th>Classique</th>
2494
+ <th>Modulaire</th>
2495
+ <th>Modulaire</th>
2496
+ </tr>
2497
+
2498
+ <tr>
2499
+ <td>app_file</td>
2500
+ <td>fichier chargeant sinatra</td>
2501
+ <td>fichier héritant de Sinatra::Base</td>
2502
+ <td>fichier héritant de Sinatra::Application</td>
2503
+ </tr>
2504
+
2505
+ <tr>
2506
+ <td>run</td>
2507
+ <td>$0 == app_file</td>
2508
+ <td>false</td>
2509
+ <td>false</td>
2510
+ </tr>
2511
+
2512
+ <tr>
2513
+ <td>logging</td>
2514
+ <td>true</td>
2515
+ <td>false</td>
2516
+ <td>true</td>
2517
+ </tr>
2469
2518
 
2470
- app_file fichier chargeant sinatra fichier héritant de Sinatra::Base
2471
- run $0 == app_file false
2472
- logging true false
2473
- method_override true false
2474
- inline_templates true false
2475
- static true false
2519
+ <tr>
2520
+ <td>method_override</td>
2521
+ <td>true</td>
2522
+ <td>false</td>
2523
+ <td>true</td>
2524
+ </tr>
2525
+
2526
+ <tr>
2527
+ <td>inline_templates</td>
2528
+ <td>true</td>
2529
+ <td>false</td>
2530
+ <td>true</td>
2531
+ </tr>
2532
+
2533
+ <tr>
2534
+ <td>static</td>
2535
+ <td>true</td>
2536
+ <td>false</td>
2537
+ <td>true</td>
2538
+ </tr>
2539
+ </table>
2476
2540
 
2477
2541
  ### Servir une application modulaire
2478
2542
 
@@ -2563,8 +2627,8 @@ class EcranDeConnexion < Sinatra::Base
2563
2627
  get('/connexion') { haml :connexion }
2564
2628
 
2565
2629
  post('/connexion') do
2566
- if params[:nom] = 'admin' && params[:motdepasse] = 'admin'
2567
- session['nom_utilisateur'] = params[:nom]
2630
+ if params['nom'] = 'admin' && params['motdepasse'] = 'admin'
2631
+ session['nom_utilisateur'] = params['nom']
2568
2632
  else
2569
2633
  redirect '/connexion'
2570
2634
  end
@@ -2689,8 +2753,8 @@ class MonApp < Sinatra::Base
2689
2753
  # Contexte de la requête pour '/ajouter_route/:nom'
2690
2754
  @value = 42
2691
2755
 
2692
- settings.get("/#{params[:nom]}") do
2693
- # Contexte de la requête pour "/#{params[:nom]}"
2756
+ settings.get("/#{params['nom']}") do
2757
+ # Contexte de la requête pour "/#{params['nom']}"
2694
2758
  @value # => nil (on est pas au sein de la même requête)
2695
2759
  end
2696
2760
 
@@ -2915,7 +2979,7 @@ SemVer que SemVerTag.
2915
2979
  * [Twitter](http://twitter.com/sinatra)
2916
2980
  * [Mailing List](http://groups.google.com/group/sinatrarb/topics)
2917
2981
  * IRC : [#sinatra](irc://chat.freenode.net/#sinatra) sur http://freenode.net
2918
- * [Sinatra Book](http://sinatra-book.gittr.com) Tutoriels et recettes
2982
+ * [Sinatra Book](https://github.com/sinatra/sinatra-book/) Tutoriels et recettes
2919
2983
  * [Sinatra Recipes](http://recipes.sinatrarb.com/) trucs et astuces rédigés par
2920
2984
  la communauté
2921
2985
  * Documentation API de la [dernière version](http://rubydoc.info/gems/sinatra)
@@ -1,6 +1,6 @@
1
1
  # Sinatra
2
2
  *Fontos megjegyzés: Ez a dokumentum csak egy fordítása az angol nyelvű
3
- változat, és lehet, hogy nem naprakész.*
3
+ változatnak, és lehet, hogy nem naprakész.*
4
4
 
5
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
@@ -56,8 +56,8 @@ hash-ből érhetünk el:
56
56
  ```ruby
57
57
  get '/hello/:name' do
58
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]}!"
59
+ # ekkor params['name'] értéke 'foo' vagy 'bar' lesz
60
+ "Helló #{params['name']}!"
61
61
  end
62
62
  ```
63
63
 
@@ -71,25 +71,25 @@ is el tudod érni:
71
71
  ```
72
72
 
73
73
  Az útvonalmintákban szerepelhetnek joker paraméterek is, melyeket a
74
- `params[:splat]` tömbön keresztül tudunk elérni.
74
+ `params['splat']` tömbön keresztül tudunk elérni.
75
75
 
76
76
  ```ruby
77
77
  get '/say/*/to/*' do
78
78
  # illeszkedik a /say/hello/to/world mintára
79
- params[:splat] # => ["hello", "world"]
79
+ params['splat'] # => ["hello", "world"]
80
80
  end
81
81
 
82
82
  get '/download/*.*' do
83
83
  # illeszkedik a /download/path/to/file.xml mintára
84
- params[:splat] # => ["path/to/file", "xml"]
84
+ params['splat'] # => ["path/to/file", "xml"]
85
85
  end
86
86
  ```
87
87
 
88
88
  Reguláris kifejezéseket is felvehetünk az útvonalba:
89
89
 
90
90
  ```ruby
91
- get %r{/hello/([\w]+)} do
92
- "Helló, #{params[:captures].first}!"
91
+ get /\A\/hello\/([\w]+)\z/ do
92
+ "Helló, #{params['captures'].first}!"
93
93
  end
94
94
  ```
95
95
 
@@ -106,7 +106,7 @@ tervezhetők, így például az user agent karakterláncot alapul véve:
106
106
 
107
107
  ```ruby
108
108
  get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
109
- "A Songbird #{params[:agent][0]} verzióját használod"
109
+ "A Songbird #{params['agent'][0]} verzióját használod"
110
110
  end
111
111
 
112
112
  get '/foo' do
@@ -122,7 +122,7 @@ mégpedig a :public_folder kapcsoló beállításával:
122
122
 
123
123
  set :public_folder, File.dirname(__FILE__) + '/static'
124
124
 
125
- Fontos mgejegyezni, hogy a nyilvános könyvtár neve nem szerepel az URL-ben.
125
+ Fontos megjegyezni, hogy a nyilvános könyvtár neve nem szerepel az URL-ben.
126
126
  A ./public/css/style.css fájl az
127
127
  `http://example.com/css/style.css` URL-en lesz elérhető.
128
128
 
@@ -244,7 +244,7 @@ változók közvetlenül elérhetőek lesznek a sablonokban:
244
244
 
245
245
  ```ruby
246
246
  get '/:id' do
247
- @foo = Foo.find(params[:id])
247
+ @foo = Foo.find(params['id'])
248
248
  haml '%h1= @foo.name'
249
249
  end
250
250
  ```
@@ -253,7 +253,7 @@ De megadhatod egy lokális változókat tartalmazó explicit hash-ben is:
253
253
 
254
254
  ```ruby
255
255
  get '/:id' do
256
- foo = Foo.find(params[:id])
256
+ foo = Foo.find(params['id'])
257
257
  haml '%h1= foo.name', :locals => { :foo => foo }
258
258
  end
259
259
  ```
@@ -332,7 +332,7 @@ használni:
332
332
  end
333
333
 
334
334
  get '/:name' do
335
- bar(params[:name])
335
+ bar(params['name'])
336
336
  end
337
337
  ```
338
338
 
@@ -351,7 +351,7 @@ az útvonalakban és a sablonokban is:
351
351
 
352
352
  get '/foo/*' do
353
353
  @note #=> 'Szeva!'
354
- params[:splat] #=> 'bar/baz'
354
+ params['splat'] #=> 'bar/baz'
355
355
  end
356
356
  ```
357
357
 
@@ -388,7 +388,7 @@ a `pass` függvényhívással:
388
388
 
389
389
  ```ruby
390
390
  get '/guess/:who' do
391
- pass unless params[:who] == 'Frici'
391
+ pass unless params['who'] == 'Frici'
392
392
  "Elkaptál!"
393
393
  end
394
394
 
@@ -454,7 +454,7 @@ előszűrő kivételt vált ki. A kivétel objektum lehívható a
454
454
 
455
455
  ```ruby
456
456
  error do
457
- 'Elnézést, de valami szörnyű hiba lépett fel - ' + env['sinatra.error'].name
457
+ 'Elnézést, de valami szörnyű hiba lépett fel - ' + env['sinatra.error'].message
458
458
  end
459
459
  ```
460
460
 
@@ -495,7 +495,7 @@ bevezetéséhez:
495
495
  ## Rack Middleware
496
496
 
497
497
  A Sinatra egy Ruby keretrendszerek számára kifejlesztett egyszerű és szabványos
498
- interfészre, a [Rack](http://rack.rubyforge.org/) -re épül. A Rack fejlesztői
498
+ interfészre, a [Rack](http://rack.github.io/) -re épül. A Rack fejlesztői
499
499
  szempontból egyik legérdekesebb jellemzője, hogy támogatja az úgynevezett
500
500
  "middleware" elnevezésű komponenseket, amelyek beékelődnek a szerver és az
501
501
  alkalmazás közé, így képesek megfigyelni és/vagy módosítani a HTTP
@@ -518,7 +518,7 @@ A Sinatra keretrendszerben gyerekjáték a Rack middleware-ek behúzása a
518
518
  ```
519
519
 
520
520
  A `use` metódus szemantikája megegyezik a
521
- [Rack::Builder](http://rack.rubyforge.org/doc/classes/Rack/Builder.html) DSL-ben
521
+ [Rack::Builder](http://rubydoc.info/github/rack/rack/master/Rack/Builder) DSL-ben
522
522
  használt +use+ metóduséval (az említett DSL-t leginkább rackup állományokban
523
523
  használják). Hogy egy példát említsünk, a `use` metódus elfogad
524
524
  változókat és blokkokat egyaránt, akár kombinálva is ezeket:
@@ -545,7 +545,7 @@ könyvtárat ajánljuk:
545
545
  require 'my_sinatra_app'
546
546
  require 'rack/test'
547
547
 
548
- class MyAppTest < Test::Unit::TestCase
548
+ class MyAppTest < Minitest::Test
549
549
  include Rack::Test::Methods
550
550
 
551
551
  def app