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.
- checksums.yaml +5 -5
- data/AUTHORS.md +1 -0
- data/CHANGELOG.md +238 -54
- data/CONTRIBUTING.md +8 -8
- data/Gemfile +47 -47
- data/LICENSE +4 -1
- data/MAINTENANCE.md +42 -0
- data/README.de.md +650 -442
- data/README.es.md +738 -357
- data/README.fr.md +15 -15
- data/README.hu.md +37 -3
- data/README.ja.md +124 -66
- data/README.ko.md +14 -14
- data/README.malayalam.md +3141 -0
- data/README.md +530 -403
- data/README.pt-br.md +2361 -334
- data/README.pt-pt.md +2 -2
- data/README.ru.md +856 -607
- data/README.zh.md +90 -28
- data/Rakefile +77 -51
- data/SECURITY.md +35 -0
- data/VERSION +1 -0
- data/lib/sinatra/base.rb +177 -239
- data/lib/sinatra/indifferent_hash.rb +200 -0
- data/lib/sinatra/main.rb +30 -10
- data/lib/sinatra/show_exceptions.rb +102 -62
- data/lib/sinatra/version.rb +1 -1
- data/sinatra.gemspec +44 -8
- metadata +41 -166
- data/lib/sinatra/ext.rb +0 -17
- data/test/asciidoctor_test.rb +0 -72
- data/test/base_test.rb +0 -167
- data/test/builder_test.rb +0 -91
- data/test/coffee_test.rb +0 -96
- data/test/compile_test.rb +0 -183
- data/test/contest.rb +0 -91
- data/test/creole_test.rb +0 -65
- data/test/delegator_test.rb +0 -160
- data/test/encoding_test.rb +0 -20
- data/test/erb_test.rb +0 -116
- data/test/extensions_test.rb +0 -98
- data/test/filter_test.rb +0 -487
- data/test/haml_test.rb +0 -109
- data/test/helper.rb +0 -132
- data/test/helpers_test.rb +0 -1917
- data/test/integration/app.rb +0 -79
- data/test/integration_helper.rb +0 -236
- data/test/integration_test.rb +0 -104
- data/test/less_test.rb +0 -69
- data/test/liquid_test.rb +0 -77
- data/test/mapped_error_test.rb +0 -285
- data/test/markaby_test.rb +0 -80
- data/test/markdown_test.rb +0 -85
- data/test/mediawiki_test.rb +0 -68
- data/test/middleware_test.rb +0 -68
- data/test/nokogiri_test.rb +0 -67
- data/test/public/favicon.ico +0 -0
- data/test/public/hello+world.txt +0 -1
- data/test/rabl_test.rb +0 -89
- data/test/rack_test.rb +0 -45
- data/test/radius_test.rb +0 -59
- data/test/rdoc_test.rb +0 -66
- data/test/readme_test.rb +0 -130
- data/test/request_test.rb +0 -100
- data/test/response_test.rb +0 -63
- data/test/result_test.rb +0 -76
- data/test/route_added_hook_test.rb +0 -59
- data/test/routing_test.rb +0 -1456
- data/test/sass_test.rb +0 -115
- data/test/scss_test.rb +0 -88
- data/test/server_test.rb +0 -56
- data/test/settings_test.rb +0 -582
- data/test/sinatra_test.rb +0 -12
- data/test/slim_test.rb +0 -102
- data/test/static_test.rb +0 -266
- data/test/streaming_test.rb +0 -149
- data/test/stylus_test.rb +0 -90
- data/test/templates_test.rb +0 -382
- data/test/textile_test.rb +0 -65
- data/test/views/a/in_a.str +0 -1
- data/test/views/ascii.erb +0 -2
- data/test/views/b/in_b.str +0 -1
- data/test/views/calc.html.erb +0 -1
- data/test/views/error.builder +0 -3
- data/test/views/error.erb +0 -3
- data/test/views/error.haml +0 -3
- data/test/views/error.sass +0 -2
- data/test/views/explicitly_nested.str +0 -1
- data/test/views/foo/hello.test +0 -1
- data/test/views/hello.asciidoc +0 -1
- data/test/views/hello.builder +0 -1
- data/test/views/hello.coffee +0 -1
- data/test/views/hello.creole +0 -1
- data/test/views/hello.erb +0 -1
- data/test/views/hello.haml +0 -1
- data/test/views/hello.less +0 -5
- data/test/views/hello.liquid +0 -1
- data/test/views/hello.mab +0 -1
- data/test/views/hello.md +0 -1
- data/test/views/hello.mediawiki +0 -1
- data/test/views/hello.nokogiri +0 -1
- data/test/views/hello.rabl +0 -2
- data/test/views/hello.radius +0 -1
- data/test/views/hello.rdoc +0 -1
- data/test/views/hello.sass +0 -2
- data/test/views/hello.scss +0 -3
- data/test/views/hello.slim +0 -1
- data/test/views/hello.str +0 -1
- data/test/views/hello.styl +0 -2
- data/test/views/hello.test +0 -1
- data/test/views/hello.textile +0 -1
- data/test/views/hello.wlang +0 -1
- data/test/views/hello.yajl +0 -1
- data/test/views/layout2.builder +0 -3
- data/test/views/layout2.erb +0 -2
- data/test/views/layout2.haml +0 -2
- data/test/views/layout2.liquid +0 -2
- data/test/views/layout2.mab +0 -2
- data/test/views/layout2.nokogiri +0 -3
- data/test/views/layout2.rabl +0 -3
- data/test/views/layout2.radius +0 -2
- data/test/views/layout2.slim +0 -3
- data/test/views/layout2.str +0 -2
- data/test/views/layout2.test +0 -1
- data/test/views/layout2.wlang +0 -2
- data/test/views/nested.str +0 -1
- data/test/views/utf8.erb +0 -2
- data/test/wlang_test.rb +0 -87
- 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
|
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 (
|
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 (
|
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
|
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{
|
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="
|
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="
|
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
|
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['
|
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 `
|
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 `
|
2240
|
+
variable d'environnement `APP_ENV` :
|
2241
2241
|
|
2242
|
-
```shell
|
2243
|
-
|
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
|
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
|
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
|
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
|
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,
|