sinatra 1.4.8 → 2.0.8.1

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 (129) hide show
  1. checksums.yaml +5 -5
  2. data/AUTHORS.md +1 -0
  3. data/CHANGELOG.md +238 -54
  4. data/CONTRIBUTING.md +8 -8
  5. data/Gemfile +47 -47
  6. data/LICENSE +4 -1
  7. data/MAINTENANCE.md +42 -0
  8. data/README.de.md +650 -442
  9. data/README.es.md +738 -357
  10. data/README.fr.md +15 -15
  11. data/README.hu.md +37 -3
  12. data/README.ja.md +124 -66
  13. data/README.ko.md +14 -14
  14. data/README.malayalam.md +3141 -0
  15. data/README.md +530 -403
  16. data/README.pt-br.md +2361 -334
  17. data/README.pt-pt.md +2 -2
  18. data/README.ru.md +856 -607
  19. data/README.zh.md +90 -28
  20. data/Rakefile +77 -51
  21. data/SECURITY.md +35 -0
  22. data/VERSION +1 -0
  23. data/lib/sinatra/base.rb +177 -239
  24. data/lib/sinatra/indifferent_hash.rb +200 -0
  25. data/lib/sinatra/main.rb +30 -10
  26. data/lib/sinatra/show_exceptions.rb +102 -62
  27. data/lib/sinatra/version.rb +1 -1
  28. data/sinatra.gemspec +44 -8
  29. metadata +41 -166
  30. data/lib/sinatra/ext.rb +0 -17
  31. data/test/asciidoctor_test.rb +0 -72
  32. data/test/base_test.rb +0 -167
  33. data/test/builder_test.rb +0 -91
  34. data/test/coffee_test.rb +0 -96
  35. data/test/compile_test.rb +0 -183
  36. data/test/contest.rb +0 -91
  37. data/test/creole_test.rb +0 -65
  38. data/test/delegator_test.rb +0 -160
  39. data/test/encoding_test.rb +0 -20
  40. data/test/erb_test.rb +0 -116
  41. data/test/extensions_test.rb +0 -98
  42. data/test/filter_test.rb +0 -487
  43. data/test/haml_test.rb +0 -109
  44. data/test/helper.rb +0 -132
  45. data/test/helpers_test.rb +0 -1917
  46. data/test/integration/app.rb +0 -79
  47. data/test/integration_helper.rb +0 -236
  48. data/test/integration_test.rb +0 -104
  49. data/test/less_test.rb +0 -69
  50. data/test/liquid_test.rb +0 -77
  51. data/test/mapped_error_test.rb +0 -285
  52. data/test/markaby_test.rb +0 -80
  53. data/test/markdown_test.rb +0 -85
  54. data/test/mediawiki_test.rb +0 -68
  55. data/test/middleware_test.rb +0 -68
  56. data/test/nokogiri_test.rb +0 -67
  57. data/test/public/favicon.ico +0 -0
  58. data/test/public/hello+world.txt +0 -1
  59. data/test/rabl_test.rb +0 -89
  60. data/test/rack_test.rb +0 -45
  61. data/test/radius_test.rb +0 -59
  62. data/test/rdoc_test.rb +0 -66
  63. data/test/readme_test.rb +0 -130
  64. data/test/request_test.rb +0 -100
  65. data/test/response_test.rb +0 -63
  66. data/test/result_test.rb +0 -76
  67. data/test/route_added_hook_test.rb +0 -59
  68. data/test/routing_test.rb +0 -1456
  69. data/test/sass_test.rb +0 -115
  70. data/test/scss_test.rb +0 -88
  71. data/test/server_test.rb +0 -56
  72. data/test/settings_test.rb +0 -582
  73. data/test/sinatra_test.rb +0 -12
  74. data/test/slim_test.rb +0 -102
  75. data/test/static_test.rb +0 -266
  76. data/test/streaming_test.rb +0 -149
  77. data/test/stylus_test.rb +0 -90
  78. data/test/templates_test.rb +0 -382
  79. data/test/textile_test.rb +0 -65
  80. data/test/views/a/in_a.str +0 -1
  81. data/test/views/ascii.erb +0 -2
  82. data/test/views/b/in_b.str +0 -1
  83. data/test/views/calc.html.erb +0 -1
  84. data/test/views/error.builder +0 -3
  85. data/test/views/error.erb +0 -3
  86. data/test/views/error.haml +0 -3
  87. data/test/views/error.sass +0 -2
  88. data/test/views/explicitly_nested.str +0 -1
  89. data/test/views/foo/hello.test +0 -1
  90. data/test/views/hello.asciidoc +0 -1
  91. data/test/views/hello.builder +0 -1
  92. data/test/views/hello.coffee +0 -1
  93. data/test/views/hello.creole +0 -1
  94. data/test/views/hello.erb +0 -1
  95. data/test/views/hello.haml +0 -1
  96. data/test/views/hello.less +0 -5
  97. data/test/views/hello.liquid +0 -1
  98. data/test/views/hello.mab +0 -1
  99. data/test/views/hello.md +0 -1
  100. data/test/views/hello.mediawiki +0 -1
  101. data/test/views/hello.nokogiri +0 -1
  102. data/test/views/hello.rabl +0 -2
  103. data/test/views/hello.radius +0 -1
  104. data/test/views/hello.rdoc +0 -1
  105. data/test/views/hello.sass +0 -2
  106. data/test/views/hello.scss +0 -3
  107. data/test/views/hello.slim +0 -1
  108. data/test/views/hello.str +0 -1
  109. data/test/views/hello.styl +0 -2
  110. data/test/views/hello.test +0 -1
  111. data/test/views/hello.textile +0 -1
  112. data/test/views/hello.wlang +0 -1
  113. data/test/views/hello.yajl +0 -1
  114. data/test/views/layout2.builder +0 -3
  115. data/test/views/layout2.erb +0 -2
  116. data/test/views/layout2.haml +0 -2
  117. data/test/views/layout2.liquid +0 -2
  118. data/test/views/layout2.mab +0 -2
  119. data/test/views/layout2.nokogiri +0 -3
  120. data/test/views/layout2.rabl +0 -3
  121. data/test/views/layout2.radius +0 -2
  122. data/test/views/layout2.slim +0 -3
  123. data/test/views/layout2.str +0 -2
  124. data/test/views/layout2.test +0 -1
  125. data/test/views/layout2.wlang +0 -2
  126. data/test/views/nested.str +0 -1
  127. data/test/views/utf8.erb +0 -2
  128. data/test/wlang_test.rb +0 -87
  129. data/test/yajl_test.rb +0 -86
data/README.fr.md CHANGED
@@ -209,7 +209,7 @@ end
209
209
  Une route peut aussi être définie par une expression régulière :
210
210
 
211
211
  ```ruby
212
- get /\A\/bonjour\/([\w]+)\z/ do
212
+ get /\/bonjour\/([\w]+)/ do
213
213
  "Bonjour, #{params['captures'].first} !"
214
214
  end
215
215
  ```
@@ -324,13 +324,13 @@ acceptées.
324
324
  Vous pouvez renvoyer n'importe quel objet qu'il s'agisse d'une réponse Rack
325
325
  valide, d'un corps de réponse Rack ou d'un code statut HTTP :
326
326
 
327
- * Un tableau de 3 éléments : `[code statut (Fixnum), en-têtes (Hash), corps
327
+ * Un tableau de 3 éléments : `[code statut (Integer), en-têtes (Hash), corps
328
328
  de la réponse (répondant à #each)]`
329
- * Un tableau de 2 élements : `[code statut (Fixnum), corps de la réponse
329
+ * Un tableau de 2 élements : `[code statut (Integer), corps de la réponse
330
330
  (répondant à #each)]`
331
331
  * Un objet qui répond à `#each` et qui ne transmet que des chaînes de
332
332
  caractères au bloc fourni
333
- * Un Fixnum représentant le code statut
333
+ * Un Integer représentant le code statut
334
334
 
335
335
  Ainsi, on peut facilement implémenter un exemple de streaming :
336
336
 
@@ -390,7 +390,7 @@ end
390
390
  Ou bien en utilisant cette expression regulière :
391
391
 
392
392
  ```ruby
393
- get %r{^(?!/index$)} do
393
+ get %r{(?!/index)} do
394
394
  # ...
395
395
  end
396
396
  ```
@@ -691,7 +691,7 @@ exemple).
691
691
  <table>
692
692
  <tr>
693
693
  <td>Dépendances</td>
694
- <td><a href="http://liquidmarkup.org/" title="liquid">liquid</a></td>
694
+ <td><a href="https://shopify.github.io/liquid/" title="liquid">liquid</a></td>
695
695
  </tr>
696
696
  <tr>
697
697
  <td>Extensions de fichier</td>
@@ -716,7 +716,7 @@ locales.
716
716
  Au choix :
717
717
  <a href="https://github.com/davidfstr/rdiscount" title="RDiscount">RDiscount</a>,
718
718
  <a href="https://github.com/vmg/redcarpet" title="RedCarpet">RedCarpet</a>,
719
- <a href="http://deveiate.org/projects/BlueCloth" title="BlueCloth">BlueCloth</a>,
719
+ <a href="https://github.com/ged/bluecloth" title="bluecloth">BlueCloth</a>,
720
720
  <a href="http://kramdown.gettalong.org/" title="kramdown">kramdown</a>,
721
721
  <a href="https://github.com/bhollis/maruku" title="maruku">maruku</a>
722
722
  </td>
@@ -2016,7 +2016,7 @@ configure do
2016
2016
  end
2017
2017
  ```
2018
2018
 
2019
- Lancé si l'environnement (variable d'environnement RACK_ENV) est `:production` :
2019
+ Lancé si l'environnement (variable d'environnement APP_ENV) est `:production` :
2020
2020
 
2021
2021
  ```ruby
2022
2022
  configure :production do
@@ -2048,7 +2048,7 @@ end
2048
2048
 
2049
2049
  ### Se protéger des attaques
2050
2050
 
2051
- Sinatra utilise [Rack::Protection](https://github.com/sinatra/rack-protection#readme)
2051
+ Sinatra utilise [Rack::Protection](https://github.com/sinatra/sinatra/tree/master/rack-protection#readme)
2052
2052
  pour protéger votre application contre les principales attaques opportunistes.
2053
2053
  Vous pouvez très simplement désactiver cette fonctionnalité (ce qui exposera
2054
2054
  votre application à beaucoup de vulnerabilités courantes) :
@@ -2121,7 +2121,7 @@ set :protection, :session => true
2121
2121
  </dd>
2122
2122
 
2123
2123
  <dt>environment</dt>
2124
- <dd>environnement courant, par défaut <tt>ENV['RACK_ENV']</tt>, ou
2124
+ <dd>environnement courant, par défaut <tt>ENV['APP_ENV']</tt>, ou
2125
2125
  <tt>"development"</tt> si absent.</dd>
2126
2126
 
2127
2127
  <dt>logging</dt>
@@ -2229,7 +2229,7 @@ set :protection, :session => true
2229
2229
 
2230
2230
  Il existe trois environnements prédéfinis : `"development"`,
2231
2231
  `"production"` et `"test"`. Les environements peuvent être
2232
- sélectionné via la variable d'environnement `RACK_ENV`. Sa valeur par défaut
2232
+ sélectionné via la variable d'environnement `APP_ENV`. Sa valeur par défaut
2233
2233
  est `"development"`. Dans ce mode, tous les templates sont rechargés à
2234
2234
  chaque requête. Des handlers spécifiques pour `not_found` et
2235
2235
  `error` sont installés pour vous permettre d'avoir une pile de trace
@@ -2237,10 +2237,10 @@ dans votre navigateur. En mode `"production"` et `"test"` les
2237
2237
  templates sont mis en cache par défaut.
2238
2238
 
2239
2239
  Pour exécuter votre application dans un environnement différent, définissez la
2240
- variable d'environnement `RACK_ENV` :
2240
+ variable d'environnement `APP_ENV` :
2241
2241
 
2242
- ```shell
2243
- RACK_ENV=production ruby my_app.rb
2242
+ ``` shell
2243
+ APP_ENV=production ruby my_app.rb
2244
2244
  ```
2245
2245
 
2246
2246
  Vous pouvez utiliser une des méthodes `development?`, `test?` et `production?`
@@ -2405,7 +2405,7 @@ class MonTest < Minitest::Test
2405
2405
  assert_equal 'Salut Frank !', last_response.body
2406
2406
  end
2407
2407
 
2408
- def test_avec_rack_env
2408
+ def test_avec_agent
2409
2409
  get '/', {}, 'HTTP_USER_AGENT' => 'Songbird'
2410
2410
  assert_equal "Vous utilisez Songbird !", last_response.body
2411
2411
  end
data/README.hu.md CHANGED
@@ -88,7 +88,7 @@ Az útvonalmintákban szerepelhetnek joker paraméterek is, melyeket a
88
88
  Reguláris kifejezéseket is felvehetünk az útvonalba:
89
89
 
90
90
  ```ruby
91
- get /\A\/hello\/([\w]+)\z/ do
91
+ get /\/hello\/([\w]+)/ do
92
92
  "Helló, #{params['captures'].first}!"
93
93
  end
94
94
  ```
@@ -411,7 +411,7 @@ Csak indításkor, de minden környezetre érvényesen fusson le:
411
411
  end
412
412
  ```
413
413
 
414
- Csak akkor fusson le, ha a környezet (a RACK_ENV környezeti változóban)
414
+ Csak akkor fusson le, ha a környezet (a APP_ENV környezeti változóban)
415
415
  `:production`-ra van állítva:
416
416
 
417
417
  ```ruby
@@ -562,7 +562,7 @@ könyvtárat ajánljuk:
562
562
  assert_equal 'Helló Frici!', last_response.body
563
563
  end
564
564
 
565
- def test_with_rack_env
565
+ def test_with_user_agent
566
566
  get '/', {}, 'HTTP_USER_AGENT' => 'Songbird'
567
567
  assert_equal "Songbird-öt használsz!", last_response.body
568
568
  end
@@ -649,6 +649,40 @@ Az alábbi kapcsolókat ismeri fel a rendszer:
649
649
  -s # a rack szerver/handler beállítása (alapértelmezetten ez a thin)
650
650
  -x # a mutex lock bekapcsolása (alapértelmezetten ki van kapcsolva)
651
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
+
652
686
  ## Fejlesztői változat
653
687
 
654
688
  Ha a Sinatra legfrissebb, fejlesztői változatát szeretnéd használni,