sinatra 1.2.0.a → 1.2.0.c
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.
- data/AUTHORS +2 -0
- data/CHANGES +69 -1
- data/Gemfile +35 -0
- data/Gemfile.lock +74 -0
- data/README.de.rdoc +16 -16
- data/README.es.rdoc +360 -80
- data/README.fr.rdoc +16 -16
- data/README.hu.rdoc +4 -4
- data/README.jp.rdoc +16 -16
- data/README.pt-br.rdoc +6 -6
- data/README.rdoc +629 -95
- data/README.ru.rdoc +317 -103
- data/README.zh.rdoc +16 -16
- data/Rakefile +6 -14
- data/lib/sinatra/base.rb +70 -30
- data/lib/sinatra/showexceptions.rb +25 -0
- data/sinatra.gemspec +8 -18
- data/test/builder_test.rb +6 -0
- data/test/coffee_test.rb +1 -1
- data/test/erubis_test.rb +6 -0
- data/test/haml_test.rb +2 -1
- data/test/helpers_test.rb +53 -0
- data/test/less_test.rb +6 -0
- data/test/liquid_test.rb +2 -1
- data/test/markaby_test.rb +2 -1
- data/test/markdown_test.rb +3 -2
- data/test/nokogiri_test.rb +2 -1
- data/test/radius_test.rb +3 -2
- data/test/rdoc_test.rb +2 -1
- data/test/routing_test.rb +49 -5
- data/test/sass_test.rb +1 -1
- data/test/scss_test.rb +1 -1
- data/test/slim_test.rb +2 -1
- data/test/templates_test.rb +43 -0
- data/test/textile_test.rb +2 -1
- data/test/views/a/in_a.str +1 -0
- data/test/views/b/in_b.str +1 -0
- data/test/views/calc.html.erb +1 -0
- metadata +22 -223
data/test/builder_test.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
begin
|
2
4
|
require 'builder'
|
3
5
|
|
4
6
|
class BuilderTest < Test::Unit::TestCase
|
@@ -87,3 +89,7 @@ class BuilderTest < Test::Unit::TestCase
|
|
87
89
|
assert_raise(Errno::ENOENT) { get('/') }
|
88
90
|
end
|
89
91
|
end
|
92
|
+
|
93
|
+
rescue LoadError
|
94
|
+
warn "#{$!.to_s}: skipping less tests"
|
95
|
+
end
|
data/test/coffee_test.rb
CHANGED
data/test/erubis_test.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
begin
|
2
4
|
require 'erubis'
|
3
5
|
|
4
6
|
class ERubisTest < Test::Unit::TestCase
|
@@ -80,3 +82,7 @@ class ERubisTest < Test::Unit::TestCase
|
|
80
82
|
assert_equal '<outer><inner>hi</inner></outer>', body
|
81
83
|
end
|
82
84
|
end
|
85
|
+
|
86
|
+
rescue LoadError
|
87
|
+
warn "#{$!.to_s}: skipping erubis tests"
|
88
|
+
end
|
data/test/haml_test.rb
CHANGED
data/test/helpers_test.rb
CHANGED
@@ -111,6 +111,18 @@ class HelpersTest < Test::Unit::TestCase
|
|
111
111
|
response = request.get('/', 'SERVER_PORT' => '444')
|
112
112
|
assert_equal 'http://example.org:444/foo', response['Location']
|
113
113
|
end
|
114
|
+
|
115
|
+
it 'works behind a reverse proxy' do
|
116
|
+
mock_app do
|
117
|
+
get '/' do
|
118
|
+
redirect '/foo'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
request = Rack::MockRequest.new(@app)
|
123
|
+
response = request.get('/', 'HTTP_X_FORWARDED_HOST' => 'example.com', 'SERVER_PORT' => '8080')
|
124
|
+
assert_equal 'http://example.com/foo', response['Location']
|
125
|
+
end
|
114
126
|
end
|
115
127
|
|
116
128
|
describe 'error' do
|
@@ -599,6 +611,9 @@ class HelpersTest < Test::Unit::TestCase
|
|
599
611
|
get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2010 23:43:52 GMT' }
|
600
612
|
assert_equal 200, status
|
601
613
|
assert_equal 'foo', body
|
614
|
+
get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2100 23:43:52 GMT' }
|
615
|
+
assert_equal 304, status
|
616
|
+
assert_equal '', body
|
602
617
|
end
|
603
618
|
end
|
604
619
|
|
@@ -691,6 +706,44 @@ class HelpersTest < Test::Unit::TestCase
|
|
691
706
|
end
|
692
707
|
end
|
693
708
|
|
709
|
+
describe 'uri' do
|
710
|
+
it 'generates absolute urls' do
|
711
|
+
mock_app { get('/') { uri }}
|
712
|
+
get '/'
|
713
|
+
assert_equal 'http://example.org/', body
|
714
|
+
end
|
715
|
+
|
716
|
+
it 'includes path_info' do
|
717
|
+
mock_app { get('/:name') { uri }}
|
718
|
+
get '/foo'
|
719
|
+
assert_equal 'http://example.org/foo', body
|
720
|
+
end
|
721
|
+
|
722
|
+
it 'allows passing an alternative to path_info' do
|
723
|
+
mock_app { get('/:name') { uri '/bar' }}
|
724
|
+
get '/foo'
|
725
|
+
assert_equal 'http://example.org/bar', body
|
726
|
+
end
|
727
|
+
|
728
|
+
it 'includes script_name' do
|
729
|
+
mock_app { get('/:name') { uri '/bar' }}
|
730
|
+
get '/foo', {}, { "SCRIPT_NAME" => '/foo' }
|
731
|
+
assert_equal 'http://example.org/foo/bar', body
|
732
|
+
end
|
733
|
+
|
734
|
+
it 'is aliased to #url' do
|
735
|
+
mock_app { get('/') { url }}
|
736
|
+
get '/'
|
737
|
+
assert_equal 'http://example.org/', body
|
738
|
+
end
|
739
|
+
|
740
|
+
it 'is aliased to #to' do
|
741
|
+
mock_app { get('/') { to }}
|
742
|
+
get '/'
|
743
|
+
assert_equal 'http://example.org/', body
|
744
|
+
end
|
745
|
+
end
|
746
|
+
|
694
747
|
module ::HelperOne; def one; '1'; end; end
|
695
748
|
module ::HelperTwo; def two; '2'; end; end
|
696
749
|
|
data/test/less_test.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
begin
|
2
4
|
require 'less'
|
3
5
|
|
4
6
|
class LessTest < Test::Unit::TestCase
|
@@ -59,3 +61,7 @@ class LessTest < Test::Unit::TestCase
|
|
59
61
|
assert_raise(Errno::ENOENT) { get('/') }
|
60
62
|
end
|
61
63
|
end
|
64
|
+
|
65
|
+
rescue LoadError
|
66
|
+
warn "#{$!.to_s}: skipping less tests"
|
67
|
+
end
|
data/test/liquid_test.rb
CHANGED
data/test/markaby_test.rb
CHANGED
data/test/markdown_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
2
|
|
3
3
|
begin
|
4
|
-
fail "rdiscount not available" if defined? JRuby
|
4
|
+
fail LoadError, "rdiscount not available" if defined? JRuby
|
5
5
|
require 'rdiscount'
|
6
6
|
|
7
7
|
class MarkdownTest < Test::Unit::TestCase
|
@@ -30,6 +30,7 @@ class MarkdownTest < Test::Unit::TestCase
|
|
30
30
|
assert_raise(Errno::ENOENT) { get('/') }
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
|
+
rescue LoadError
|
34
35
|
warn "#{$!.to_s}: skipping markdown tests"
|
35
36
|
end
|
data/test/nokogiri_test.rb
CHANGED
data/test/radius_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
2
|
|
3
3
|
begin
|
4
|
-
fail 'Radius broken on 1.9.' if RUBY_VERSION >= '1.9.1'
|
4
|
+
fail LoadError, 'Radius broken on 1.9.' if RUBY_VERSION >= '1.9.1'
|
5
5
|
require 'radius'
|
6
6
|
|
7
7
|
class RadiusTest < Test::Unit::TestCase
|
@@ -54,6 +54,7 @@ class RadiusTest < Test::Unit::TestCase
|
|
54
54
|
assert_equal 'foo', body
|
55
55
|
end
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
|
+
rescue LoadError
|
58
59
|
warn "#{$!.to_s}: skipping radius tests"
|
59
60
|
end
|
data/test/rdoc_test.rb
CHANGED
data/test/routing_test.rb
CHANGED
@@ -179,6 +179,38 @@ class RoutingTest < Test::Unit::TestCase
|
|
179
179
|
assert_equal "foo=;bar=", body
|
180
180
|
end
|
181
181
|
|
182
|
+
it "supports named captures like %r{/hello/(?<person>[^/?#]+)} on Ruby >= 1.9" do
|
183
|
+
next if RUBY_VERSION < '1.9'
|
184
|
+
mock_app {
|
185
|
+
get Regexp.new('/hello/(?<person>[^/?#]+)') do
|
186
|
+
"Hello #{params['person']}"
|
187
|
+
end
|
188
|
+
}
|
189
|
+
get '/hello/Frank'
|
190
|
+
assert_equal 'Hello Frank', body
|
191
|
+
end
|
192
|
+
|
193
|
+
it "supports optional named captures like %r{/page(?<format>.[^/?#]+)?} on Ruby >= 1.9" do
|
194
|
+
next if RUBY_VERSION < '1.9'
|
195
|
+
mock_app {
|
196
|
+
get Regexp.new('/page(?<format>.[^/?#]+)?') do
|
197
|
+
"format=#{params[:format]}"
|
198
|
+
end
|
199
|
+
}
|
200
|
+
|
201
|
+
get '/page.html'
|
202
|
+
assert ok?
|
203
|
+
assert_equal "format=.html", body
|
204
|
+
|
205
|
+
get '/page.xml'
|
206
|
+
assert ok?
|
207
|
+
assert_equal "format=.xml", body
|
208
|
+
|
209
|
+
get '/page'
|
210
|
+
assert ok?
|
211
|
+
assert_equal "format=", body
|
212
|
+
end
|
213
|
+
|
182
214
|
it "supports single splat params like /*" do
|
183
215
|
mock_app {
|
184
216
|
get '/*' do
|
@@ -247,7 +279,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
247
279
|
assert_equal 'right on', body
|
248
280
|
end
|
249
281
|
|
250
|
-
it "literally matches
|
282
|
+
it "literally matches dot in paths" do
|
251
283
|
route_def '/test.bar'
|
252
284
|
|
253
285
|
get '/test.bar'
|
@@ -256,14 +288,14 @@ class RoutingTest < Test::Unit::TestCase
|
|
256
288
|
assert not_found?
|
257
289
|
end
|
258
290
|
|
259
|
-
it "literally matches
|
291
|
+
it "literally matches dollar sign in paths" do
|
260
292
|
route_def '/test$/'
|
261
293
|
|
262
294
|
get '/test$/'
|
263
295
|
assert ok?
|
264
296
|
end
|
265
297
|
|
266
|
-
it "literally matches
|
298
|
+
it "literally matches plus sign in paths" do
|
267
299
|
route_def '/te+st/'
|
268
300
|
|
269
301
|
get '/te%2Bst/'
|
@@ -272,7 +304,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
272
304
|
assert not_found?
|
273
305
|
end
|
274
306
|
|
275
|
-
it "literally matches
|
307
|
+
it "literally matches parens in paths" do
|
276
308
|
route_def '/test(bar)/'
|
277
309
|
|
278
310
|
get '/test(bar)/'
|
@@ -611,6 +643,18 @@ class RoutingTest < Test::Unit::TestCase
|
|
611
643
|
assert_equal 'Hello World', body
|
612
644
|
end
|
613
645
|
|
646
|
+
it "treats missing user agent like an empty string" do
|
647
|
+
mock_app do
|
648
|
+
user_agent(/.*/)
|
649
|
+
get '/' do
|
650
|
+
"Hello World"
|
651
|
+
end
|
652
|
+
end
|
653
|
+
get '/'
|
654
|
+
assert_equal 200, status
|
655
|
+
assert_equal 'Hello World', body
|
656
|
+
end
|
657
|
+
|
614
658
|
it "makes captures in user agent pattern available in params[:agent]" do
|
615
659
|
mock_app {
|
616
660
|
user_agent(/Foo (.*)/)
|
@@ -636,7 +680,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
636
680
|
get '/', {}, { 'HTTP_ACCEPT' => 'application/xml' }
|
637
681
|
assert ok?
|
638
682
|
assert_equal 'application/xml', body
|
639
|
-
assert_equal 'application/xml', response.headers['Content-Type']
|
683
|
+
assert_equal 'application/xml;charset=utf-8', response.headers['Content-Type']
|
640
684
|
|
641
685
|
get '/', {}, { :accept => 'text/html' }
|
642
686
|
assert !ok?
|
data/test/sass_test.rb
CHANGED
data/test/scss_test.rb
CHANGED
data/test/slim_test.rb
CHANGED
data/test/templates_test.rb
CHANGED
@@ -223,6 +223,49 @@ class TemplatesTest < Test::Unit::TestCase
|
|
223
223
|
end
|
224
224
|
assert_equal "Hello <%= 'World' %>!", body
|
225
225
|
end
|
226
|
+
|
227
|
+
it "is possible to register another template" do
|
228
|
+
Tilt.register "html.erb", Tilt[:erb]
|
229
|
+
render_app { render :erb, :calc }
|
230
|
+
assert_equal '2', body
|
231
|
+
end
|
232
|
+
|
233
|
+
it "passes scope to the template" do
|
234
|
+
mock_app do
|
235
|
+
template :scoped do
|
236
|
+
'Hello <%= foo %>'
|
237
|
+
end
|
238
|
+
|
239
|
+
get '/' do
|
240
|
+
some_scope = Object.new
|
241
|
+
def some_scope.foo() 'World!' end
|
242
|
+
erb :scoped, :scope => some_scope
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
get '/'
|
247
|
+
assert ok?
|
248
|
+
assert_equal 'Hello World!', body
|
249
|
+
end
|
250
|
+
|
251
|
+
it "is possible to use custom logic for finding template files" do
|
252
|
+
mock_app do
|
253
|
+
set :views, ["a", "b"].map { |d| File.dirname(__FILE__) + '/views/' + d }
|
254
|
+
def find_template(views, name, engine, &block)
|
255
|
+
Array(views).each { |v| super(v, name, engine, &block) }
|
256
|
+
end
|
257
|
+
|
258
|
+
get('/:name') do
|
259
|
+
render :str, params[:name].to_sym
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
get '/in_a'
|
264
|
+
assert_body 'Gimme an A!'
|
265
|
+
|
266
|
+
get '/in_b'
|
267
|
+
assert_body 'Gimme a B!'
|
268
|
+
end
|
226
269
|
end
|
227
270
|
|
228
271
|
# __END__ : this is not the real end of the script.
|
data/test/textile_test.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Gimme an A!
|
@@ -0,0 +1 @@
|
|
1
|
+
Gimme a B!
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= 1 + 1 %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 3414817362724122558
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 1.2.0.
|
10
|
+
- c
|
11
|
+
version: 1.2.0.c
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Blake Mizerany
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date:
|
22
|
+
date: 2011-02-19 00:00:00 +01:00
|
23
23
|
default_executable:
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
@@ -43,33 +43,27 @@ dependencies:
|
|
43
43
|
requirement: &id002 !ruby/object:Gem::Requirement
|
44
44
|
none: false
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
hash:
|
48
|
+
hash: 27
|
49
49
|
segments:
|
50
50
|
- 1
|
51
51
|
- 2
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
prerelease: false
|
58
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
52
|
+
- 2
|
53
|
+
version: 1.2.2
|
54
|
+
- - <
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
hash: 3
|
64
57
|
segments:
|
58
|
+
- 2
|
65
59
|
- 0
|
66
|
-
version: "0"
|
67
|
-
type: :
|
68
|
-
version_requirements: *
|
60
|
+
version: "2.0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id002
|
69
63
|
- !ruby/object:Gem::Dependency
|
70
64
|
name: shotgun
|
71
65
|
prerelease: false
|
72
|
-
requirement: &
|
66
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
73
67
|
none: false
|
74
68
|
requirements:
|
75
69
|
- - ~>
|
@@ -80,207 +74,7 @@ dependencies:
|
|
80
74
|
- 6
|
81
75
|
version: "0.6"
|
82
76
|
type: :development
|
83
|
-
version_requirements: *
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: rack-test
|
86
|
-
prerelease: false
|
87
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
|
-
requirements:
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
hash: 7
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
- 5
|
96
|
-
- 6
|
97
|
-
version: 0.5.6
|
98
|
-
type: :development
|
99
|
-
version_requirements: *id005
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: haml
|
102
|
-
prerelease: false
|
103
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
104
|
-
none: false
|
105
|
-
requirements:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
hash: 7
|
109
|
-
segments:
|
110
|
-
- 3
|
111
|
-
- 0
|
112
|
-
version: "3.0"
|
113
|
-
type: :development
|
114
|
-
version_requirements: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: builder
|
117
|
-
prerelease: false
|
118
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
|
-
requirements:
|
121
|
-
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
hash: 3
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
version: "0"
|
127
|
-
type: :development
|
128
|
-
version_requirements: *id007
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
name: erubis
|
131
|
-
prerelease: false
|
132
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
|
-
requirements:
|
135
|
-
- - ">="
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
hash: 3
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
version: "0"
|
141
|
-
type: :development
|
142
|
-
version_requirements: *id008
|
143
|
-
- !ruby/object:Gem::Dependency
|
144
|
-
name: less
|
145
|
-
prerelease: false
|
146
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
|
-
requirements:
|
149
|
-
- - ">="
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
hash: 3
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
version: "0"
|
155
|
-
type: :development
|
156
|
-
version_requirements: *id009
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: liquid
|
159
|
-
prerelease: false
|
160
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ">="
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
hash: 3
|
166
|
-
segments:
|
167
|
-
- 0
|
168
|
-
version: "0"
|
169
|
-
type: :development
|
170
|
-
version_requirements: *id010
|
171
|
-
- !ruby/object:Gem::Dependency
|
172
|
-
name: rdiscount
|
173
|
-
prerelease: false
|
174
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
175
|
-
none: false
|
176
|
-
requirements:
|
177
|
-
- - ">="
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
hash: 3
|
180
|
-
segments:
|
181
|
-
- 0
|
182
|
-
version: "0"
|
183
|
-
type: :development
|
184
|
-
version_requirements: *id011
|
185
|
-
- !ruby/object:Gem::Dependency
|
186
|
-
name: RedCloth
|
187
|
-
prerelease: false
|
188
|
-
requirement: &id012 !ruby/object:Gem::Requirement
|
189
|
-
none: false
|
190
|
-
requirements:
|
191
|
-
- - ">="
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
hash: 3
|
194
|
-
segments:
|
195
|
-
- 0
|
196
|
-
version: "0"
|
197
|
-
type: :development
|
198
|
-
version_requirements: *id012
|
199
|
-
- !ruby/object:Gem::Dependency
|
200
|
-
name: radius
|
201
|
-
prerelease: false
|
202
|
-
requirement: &id013 !ruby/object:Gem::Requirement
|
203
|
-
none: false
|
204
|
-
requirements:
|
205
|
-
- - ">="
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
hash: 3
|
208
|
-
segments:
|
209
|
-
- 0
|
210
|
-
version: "0"
|
211
|
-
type: :development
|
212
|
-
version_requirements: *id013
|
213
|
-
- !ruby/object:Gem::Dependency
|
214
|
-
name: markaby
|
215
|
-
prerelease: false
|
216
|
-
requirement: &id014 !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
|
-
requirements:
|
219
|
-
- - ">="
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
hash: 3
|
222
|
-
segments:
|
223
|
-
- 0
|
224
|
-
version: "0"
|
225
|
-
type: :development
|
226
|
-
version_requirements: *id014
|
227
|
-
- !ruby/object:Gem::Dependency
|
228
|
-
name: coffee-script
|
229
|
-
prerelease: false
|
230
|
-
requirement: &id015 !ruby/object:Gem::Requirement
|
231
|
-
none: false
|
232
|
-
requirements:
|
233
|
-
- - ">="
|
234
|
-
- !ruby/object:Gem::Version
|
235
|
-
hash: 3
|
236
|
-
segments:
|
237
|
-
- 2
|
238
|
-
- 0
|
239
|
-
version: "2.0"
|
240
|
-
type: :development
|
241
|
-
version_requirements: *id015
|
242
|
-
- !ruby/object:Gem::Dependency
|
243
|
-
name: rdoc
|
244
|
-
prerelease: false
|
245
|
-
requirement: &id016 !ruby/object:Gem::Requirement
|
246
|
-
none: false
|
247
|
-
requirements:
|
248
|
-
- - ">="
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
hash: 3
|
251
|
-
segments:
|
252
|
-
- 0
|
253
|
-
version: "0"
|
254
|
-
type: :development
|
255
|
-
version_requirements: *id016
|
256
|
-
- !ruby/object:Gem::Dependency
|
257
|
-
name: nokogiri
|
258
|
-
prerelease: false
|
259
|
-
requirement: &id017 !ruby/object:Gem::Requirement
|
260
|
-
none: false
|
261
|
-
requirements:
|
262
|
-
- - ">="
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
hash: 3
|
265
|
-
segments:
|
266
|
-
- 0
|
267
|
-
version: "0"
|
268
|
-
type: :development
|
269
|
-
version_requirements: *id017
|
270
|
-
- !ruby/object:Gem::Dependency
|
271
|
-
name: slim
|
272
|
-
prerelease: false
|
273
|
-
requirement: &id018 !ruby/object:Gem::Requirement
|
274
|
-
none: false
|
275
|
-
requirements:
|
276
|
-
- - ">="
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
hash: 3
|
279
|
-
segments:
|
280
|
-
- 0
|
281
|
-
version: "0"
|
282
|
-
type: :development
|
283
|
-
version_requirements: *id018
|
77
|
+
version_requirements: *id003
|
284
78
|
description: Classy web-development dressed in a DSL
|
285
79
|
email: sinatrarb@googlegroups.com
|
286
80
|
executables: []
|
@@ -299,6 +93,8 @@ extra_rdoc_files:
|
|
299
93
|
files:
|
300
94
|
- AUTHORS
|
301
95
|
- CHANGES
|
96
|
+
- Gemfile
|
97
|
+
- Gemfile.lock
|
302
98
|
- LICENSE
|
303
99
|
- README.de.rdoc
|
304
100
|
- README.es.rdoc
|
@@ -354,7 +150,10 @@ files:
|
|
354
150
|
- test/static_test.rb
|
355
151
|
- test/templates_test.rb
|
356
152
|
- test/textile_test.rb
|
153
|
+
- test/views/a/in_a.str
|
357
154
|
- test/views/ascii.haml
|
155
|
+
- test/views/b/in_b.str
|
156
|
+
- test/views/calc.html.erb
|
358
157
|
- test/views/error.builder
|
359
158
|
- test/views/error.erb
|
360
159
|
- test/views/error.erubis
|
@@ -430,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
430
229
|
requirements: []
|
431
230
|
|
432
231
|
rubyforge_project: sinatra
|
433
|
-
rubygems_version: 1.
|
232
|
+
rubygems_version: 1.5.2
|
434
233
|
signing_key:
|
435
234
|
specification_version: 2
|
436
235
|
summary: Classy web-development dressed in a DSL
|