sinatra 1.4.8 → 2.1.0

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 (133) hide show
  1. checksums.yaml +5 -5
  2. data/AUTHORS.md +1 -0
  3. data/CHANGELOG.md +272 -54
  4. data/CONTRIBUTING.md +8 -8
  5. data/Gemfile +48 -47
  6. data/LICENSE +4 -1
  7. data/MAINTENANCE.md +42 -0
  8. data/README.de.md +651 -443
  9. data/README.es.md +738 -357
  10. data/README.fr.md +197 -100
  11. data/README.hu.md +40 -6
  12. data/README.ja.md +125 -67
  13. data/README.ko.md +15 -15
  14. data/README.malayalam.md +3141 -0
  15. data/README.md +592 -432
  16. data/README.pt-br.md +2362 -335
  17. data/README.pt-pt.md +5 -5
  18. data/README.ru.md +857 -608
  19. data/README.zh.md +91 -29
  20. data/Rakefile +77 -51
  21. data/SECURITY.md +35 -0
  22. data/VERSION +1 -0
  23. data/examples/chat.rb +2 -1
  24. data/examples/rainbows.conf +3 -0
  25. data/examples/rainbows.rb +20 -0
  26. data/examples/stream.ru +4 -4
  27. data/lib/sinatra/base.rb +243 -265
  28. data/lib/sinatra/indifferent_hash.rb +200 -0
  29. data/lib/sinatra/main.rb +30 -10
  30. data/lib/sinatra/show_exceptions.rb +67 -62
  31. data/lib/sinatra/version.rb +1 -1
  32. data/sinatra.gemspec +44 -8
  33. metadata +43 -167
  34. data/lib/sinatra/ext.rb +0 -17
  35. data/test/asciidoctor_test.rb +0 -72
  36. data/test/base_test.rb +0 -167
  37. data/test/builder_test.rb +0 -91
  38. data/test/coffee_test.rb +0 -96
  39. data/test/compile_test.rb +0 -183
  40. data/test/contest.rb +0 -91
  41. data/test/creole_test.rb +0 -65
  42. data/test/delegator_test.rb +0 -160
  43. data/test/encoding_test.rb +0 -20
  44. data/test/erb_test.rb +0 -116
  45. data/test/extensions_test.rb +0 -98
  46. data/test/filter_test.rb +0 -487
  47. data/test/haml_test.rb +0 -109
  48. data/test/helper.rb +0 -132
  49. data/test/helpers_test.rb +0 -1917
  50. data/test/integration/app.rb +0 -79
  51. data/test/integration_helper.rb +0 -236
  52. data/test/integration_test.rb +0 -104
  53. data/test/less_test.rb +0 -69
  54. data/test/liquid_test.rb +0 -77
  55. data/test/mapped_error_test.rb +0 -285
  56. data/test/markaby_test.rb +0 -80
  57. data/test/markdown_test.rb +0 -85
  58. data/test/mediawiki_test.rb +0 -68
  59. data/test/middleware_test.rb +0 -68
  60. data/test/nokogiri_test.rb +0 -67
  61. data/test/public/favicon.ico +0 -0
  62. data/test/public/hello+world.txt +0 -1
  63. data/test/rabl_test.rb +0 -89
  64. data/test/rack_test.rb +0 -45
  65. data/test/radius_test.rb +0 -59
  66. data/test/rdoc_test.rb +0 -66
  67. data/test/readme_test.rb +0 -130
  68. data/test/request_test.rb +0 -100
  69. data/test/response_test.rb +0 -63
  70. data/test/result_test.rb +0 -76
  71. data/test/route_added_hook_test.rb +0 -59
  72. data/test/routing_test.rb +0 -1456
  73. data/test/sass_test.rb +0 -115
  74. data/test/scss_test.rb +0 -88
  75. data/test/server_test.rb +0 -56
  76. data/test/settings_test.rb +0 -582
  77. data/test/sinatra_test.rb +0 -12
  78. data/test/slim_test.rb +0 -102
  79. data/test/static_test.rb +0 -266
  80. data/test/streaming_test.rb +0 -149
  81. data/test/stylus_test.rb +0 -90
  82. data/test/templates_test.rb +0 -382
  83. data/test/textile_test.rb +0 -65
  84. data/test/views/a/in_a.str +0 -1
  85. data/test/views/ascii.erb +0 -2
  86. data/test/views/b/in_b.str +0 -1
  87. data/test/views/calc.html.erb +0 -1
  88. data/test/views/error.builder +0 -3
  89. data/test/views/error.erb +0 -3
  90. data/test/views/error.haml +0 -3
  91. data/test/views/error.sass +0 -2
  92. data/test/views/explicitly_nested.str +0 -1
  93. data/test/views/foo/hello.test +0 -1
  94. data/test/views/hello.asciidoc +0 -1
  95. data/test/views/hello.builder +0 -1
  96. data/test/views/hello.coffee +0 -1
  97. data/test/views/hello.creole +0 -1
  98. data/test/views/hello.erb +0 -1
  99. data/test/views/hello.haml +0 -1
  100. data/test/views/hello.less +0 -5
  101. data/test/views/hello.liquid +0 -1
  102. data/test/views/hello.mab +0 -1
  103. data/test/views/hello.md +0 -1
  104. data/test/views/hello.mediawiki +0 -1
  105. data/test/views/hello.nokogiri +0 -1
  106. data/test/views/hello.rabl +0 -2
  107. data/test/views/hello.radius +0 -1
  108. data/test/views/hello.rdoc +0 -1
  109. data/test/views/hello.sass +0 -2
  110. data/test/views/hello.scss +0 -3
  111. data/test/views/hello.slim +0 -1
  112. data/test/views/hello.str +0 -1
  113. data/test/views/hello.styl +0 -2
  114. data/test/views/hello.test +0 -1
  115. data/test/views/hello.textile +0 -1
  116. data/test/views/hello.wlang +0 -1
  117. data/test/views/hello.yajl +0 -1
  118. data/test/views/layout2.builder +0 -3
  119. data/test/views/layout2.erb +0 -2
  120. data/test/views/layout2.haml +0 -2
  121. data/test/views/layout2.liquid +0 -2
  122. data/test/views/layout2.mab +0 -2
  123. data/test/views/layout2.nokogiri +0 -3
  124. data/test/views/layout2.rabl +0 -3
  125. data/test/views/layout2.radius +0 -2
  126. data/test/views/layout2.slim +0 -3
  127. data/test/views/layout2.str +0 -2
  128. data/test/views/layout2.test +0 -1
  129. data/test/views/layout2.wlang +0 -2
  130. data/test/views/nested.str +0 -1
  131. data/test/views/utf8.erb +0 -2
  132. data/test/wlang_test.rb +0 -87
  133. data/test/yajl_test.rb +0 -86
data/test/wlang_test.rb DELETED
@@ -1,87 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- begin
4
- require 'wlang'
5
-
6
- class WLangTest < Minitest::Test
7
- def engine
8
- Tilt::WLangTemplate
9
- end
10
-
11
- def wlang_app(&block)
12
- mock_app {
13
- set :views, File.dirname(__FILE__) + '/views'
14
- get '/', &block
15
- }
16
- get '/'
17
- end
18
-
19
- it 'uses the correct engine' do
20
- assert_equal engine, Tilt[:wlang]
21
- end
22
-
23
- it 'renders .wlang files in views path' do
24
- wlang_app { wlang :hello }
25
- assert ok?
26
- assert_equal "Hello from wlang!\n", body
27
- end
28
-
29
- it 'renders in the app instance scope' do
30
- mock_app do
31
- helpers do
32
- def who; "world"; end
33
- end
34
- get('/') { wlang 'Hello +{who}!' }
35
- end
36
- get '/'
37
- assert ok?
38
- assert_equal 'Hello world!', body
39
- end
40
-
41
- it 'takes a :locals option' do
42
- wlang_app do
43
- locals = {:foo => 'Bar'}
44
- wlang 'Hello ${foo}!', :locals => locals
45
- end
46
- assert ok?
47
- assert_equal 'Hello Bar!', body
48
- end
49
-
50
- it "renders with inline layouts" do
51
- mock_app do
52
- layout { 'THIS. IS. +{yield.upcase}!' }
53
- get('/') { wlang 'Sparta' }
54
- end
55
- get '/'
56
- assert ok?
57
- assert_equal 'THIS. IS. SPARTA!', body
58
- end
59
-
60
- it "renders with file layouts" do
61
- wlang_app { wlang 'Hello World', :layout => :layout2 }
62
- assert ok?
63
- assert_body "WLang Layout!\nHello World"
64
- end
65
-
66
- it "can rendered truly nested layouts by accepting a layout and a block with the contents" do
67
- mock_app do
68
- template(:main_outer_layout) { "<h1>Title</h1>\n>{ yield }" }
69
- template(:an_inner_layout) { "<h2>Subtitle</h2>\n>{ yield }" }
70
- template(:a_page) { "<p>Contents.</p>\n" }
71
- get('/') do
72
- wlang :main_outer_layout, :layout => false do
73
- wlang :an_inner_layout do
74
- wlang :a_page
75
- end
76
- end
77
- end
78
- end
79
- get '/'
80
- assert ok?
81
- assert_body "<h1>Title</h1>\n<h2>Subtitle</h2>\n<p>Contents.</p>\n"
82
- end
83
- end
84
-
85
- rescue LoadError
86
- warn "#{$!.to_s}: skipping wlang tests"
87
- end
data/test/yajl_test.rb DELETED
@@ -1,86 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- begin
4
- require 'yajl'
5
-
6
- class YajlTest < Minitest::Test
7
- def yajl_app(&block)
8
- mock_app do
9
- set :views, File.dirname(__FILE__) + '/views'
10
- get('/', &block)
11
- end
12
- get '/'
13
- end
14
-
15
- it 'renders inline Yajl strings' do
16
- yajl_app { yajl('json = { :foo => "bar" }') }
17
- assert ok?
18
- assert_body '{"foo":"bar"}'
19
- end
20
-
21
- it 'renders .yajl files in views path' do
22
- yajl_app { yajl(:hello) }
23
- assert ok?
24
- assert_body '{"yajl":"hello"}'
25
- end
26
-
27
- it 'raises error if template not found' do
28
- mock_app { get('/') { yajl(:no_such_template) } }
29
- assert_raises(Errno::ENOENT) { get('/') }
30
- end
31
-
32
- it 'accepts a :locals option' do
33
- yajl_app do
34
- locals = { :object => { :foo => 'bar' } }
35
- yajl 'json = object', :locals => locals
36
- end
37
- assert ok?
38
- assert_body '{"foo":"bar"}'
39
- end
40
-
41
- it 'accepts a :scope option' do
42
- yajl_app do
43
- scope = { :object => { :foo => 'bar' } }
44
- yajl 'json = self[:object]', :scope => scope
45
- end
46
- assert ok?
47
- assert_body '{"foo":"bar"}'
48
- end
49
-
50
- it 'decorates the json with a callback' do
51
- yajl_app do
52
- yajl(
53
- 'json = { :foo => "bar" }',
54
- { :callback => 'baz' }
55
- )
56
- end
57
- assert ok?
58
- assert_body 'baz({"foo":"bar"});'
59
- end
60
-
61
- it 'decorates the json with a variable' do
62
- yajl_app do
63
- yajl(
64
- 'json = { :foo => "bar" }',
65
- { :variable => 'qux' }
66
- )
67
- end
68
- assert ok?
69
- assert_body 'var qux = {"foo":"bar"};'
70
- end
71
-
72
- it 'decorates the json with a callback and a variable' do
73
- yajl_app do
74
- yajl(
75
- 'json = { :foo => "bar" }',
76
- { :callback => 'baz', :variable => 'qux' }
77
- )
78
- end
79
- assert ok?
80
- assert_body 'var qux = {"foo":"bar"}; baz(qux);'
81
- end
82
- end
83
-
84
- rescue LoadError
85
- warn "#{$!.to_s}: skipping yajl tests"
86
- end