darkhelmet-sinatra 0.9.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +41 -0
- data/CHANGES +243 -0
- data/LICENSE +22 -0
- data/README.rdoc +535 -0
- data/Rakefile +136 -0
- data/compat/app_test.rb +301 -0
- data/compat/application_test.rb +334 -0
- data/compat/builder_test.rb +101 -0
- data/compat/compat_test.rb +12 -0
- data/compat/custom_error_test.rb +62 -0
- data/compat/erb_test.rb +136 -0
- data/compat/events_test.rb +78 -0
- data/compat/filter_test.rb +30 -0
- data/compat/haml_test.rb +233 -0
- data/compat/helper.rb +30 -0
- data/compat/mapped_error_test.rb +72 -0
- data/compat/pipeline_test.rb +71 -0
- data/compat/public/foo.xml +1 -0
- data/compat/sass_test.rb +57 -0
- data/compat/sessions_test.rb +39 -0
- data/compat/streaming_test.rb +133 -0
- data/compat/sym_params_test.rb +19 -0
- data/compat/template_test.rb +30 -0
- data/compat/use_in_file_templates_test.rb +47 -0
- data/compat/views/foo.builder +1 -0
- data/compat/views/foo.erb +1 -0
- data/compat/views/foo.haml +1 -0
- data/compat/views/foo.sass +2 -0
- data/compat/views/foo_layout.erb +2 -0
- data/compat/views/foo_layout.haml +2 -0
- data/compat/views/layout_test/foo.builder +1 -0
- data/compat/views/layout_test/foo.erb +1 -0
- data/compat/views/layout_test/foo.haml +1 -0
- data/compat/views/layout_test/foo.sass +2 -0
- data/compat/views/layout_test/layout.builder +3 -0
- data/compat/views/layout_test/layout.erb +1 -0
- data/compat/views/layout_test/layout.haml +1 -0
- data/compat/views/layout_test/layout.sass +2 -0
- data/compat/views/no_layout/no_layout.builder +1 -0
- data/compat/views/no_layout/no_layout.haml +1 -0
- data/lib/sinatra/base.rb +1007 -0
- data/lib/sinatra/compat.rb +252 -0
- data/lib/sinatra/images/404.png +0 -0
- data/lib/sinatra/images/500.png +0 -0
- data/lib/sinatra/main.rb +47 -0
- data/lib/sinatra/test/bacon.rb +19 -0
- data/lib/sinatra/test/rspec.rb +13 -0
- data/lib/sinatra/test/spec.rb +11 -0
- data/lib/sinatra/test/unit.rb +13 -0
- data/lib/sinatra/test.rb +121 -0
- data/lib/sinatra.rb +8 -0
- data/sinatra.gemspec +116 -0
- data/test/base_test.rb +112 -0
- data/test/builder_test.rb +64 -0
- data/test/data/reload_app_file.rb +3 -0
- data/test/erb_test.rb +81 -0
- data/test/extensions_test.rb +63 -0
- data/test/filter_test.rb +99 -0
- data/test/haml_test.rb +68 -0
- data/test/helper.rb +85 -0
- data/test/helpers_test.rb +467 -0
- data/test/mapped_error_test.rb +160 -0
- data/test/middleware_test.rb +60 -0
- data/test/options_test.rb +374 -0
- data/test/reload_test.rb +68 -0
- data/test/request_test.rb +18 -0
- data/test/response_test.rb +42 -0
- data/test/result_test.rb +98 -0
- data/test/routing_test.rb +712 -0
- data/test/sass_test.rb +36 -0
- data/test/server_test.rb +41 -0
- data/test/sinatra_test.rb +13 -0
- data/test/static_test.rb +65 -0
- data/test/templates_test.rb +88 -0
- data/test/test_test.rb +109 -0
- data/test/views/hello.builder +1 -0
- data/test/views/hello.erb +1 -0
- data/test/views/hello.haml +1 -0
- data/test/views/hello.sass +2 -0
- data/test/views/hello.test +1 -0
- data/test/views/layout2.builder +3 -0
- data/test/views/layout2.erb +2 -0
- data/test/views/layout2.haml +2 -0
- data/test/views/layout2.test +1 -0
- metadata +184 -0
data/test/sass_test.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
describe "Sass Templates" do
|
4
|
+
def sass_app(&block)
|
5
|
+
mock_app {
|
6
|
+
set :views, File.dirname(__FILE__) + '/views'
|
7
|
+
get '/', &block
|
8
|
+
}
|
9
|
+
get '/'
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'renders inline Sass strings' do
|
13
|
+
sass_app { sass "#sass\n :background-color #FFF\n" }
|
14
|
+
assert ok?
|
15
|
+
assert_equal "#sass {\n background-color: #FFF; }\n", body
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'renders .sass files in views path' do
|
19
|
+
sass_app { sass :hello }
|
20
|
+
assert ok?
|
21
|
+
assert_equal "#sass {\n background-color: #FFF; }\n", body
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'ignores the layout option' do
|
25
|
+
sass_app { sass :hello, :layout => :layout2 }
|
26
|
+
assert ok?
|
27
|
+
assert_equal "#sass {\n background-color: #FFF; }\n", body
|
28
|
+
end
|
29
|
+
|
30
|
+
it "raises error if template not found" do
|
31
|
+
mock_app {
|
32
|
+
get('/') { sass :no_such_template }
|
33
|
+
}
|
34
|
+
assert_raise(Errno::ENOENT) { get('/') }
|
35
|
+
end
|
36
|
+
end
|
data/test/server_test.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class Rack::Handler::Mock
|
4
|
+
extend Test::Unit::Assertions
|
5
|
+
|
6
|
+
def self.run(app, options={})
|
7
|
+
assert(app < Sinatra::Base)
|
8
|
+
assert_equal 9001, options[:Port]
|
9
|
+
assert_equal 'foo.local', options[:Host]
|
10
|
+
yield new
|
11
|
+
end
|
12
|
+
|
13
|
+
def stop
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'Sinatra::Base.run!' do
|
18
|
+
before do
|
19
|
+
mock_app {
|
20
|
+
set :server, 'mock'
|
21
|
+
set :host, 'foo.local'
|
22
|
+
set :port, 9001
|
23
|
+
}
|
24
|
+
$stdout = File.open('/dev/null', 'wb')
|
25
|
+
end
|
26
|
+
|
27
|
+
after { $stdout = STDOUT }
|
28
|
+
|
29
|
+
it "locates the appropriate Rack handler and calls ::run" do
|
30
|
+
@app.run!
|
31
|
+
end
|
32
|
+
|
33
|
+
it "sets options on the app before running" do
|
34
|
+
@app.run! :sessions => true
|
35
|
+
assert @app.sessions?
|
36
|
+
end
|
37
|
+
|
38
|
+
it "falls back on the next server handler when not found" do
|
39
|
+
@app.run! :server => %w[foo bar mock]
|
40
|
+
end
|
41
|
+
end
|
data/test/static_test.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
describe 'Static' do
|
4
|
+
before do
|
5
|
+
mock_app {
|
6
|
+
set :static, true
|
7
|
+
set :public, File.dirname(__FILE__)
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'serves GET requests for files in the public directory' do
|
12
|
+
get "/#{File.basename(__FILE__)}"
|
13
|
+
assert ok?
|
14
|
+
assert_equal File.read(__FILE__), body
|
15
|
+
assert_equal File.size(__FILE__).to_s, response['Content-Length']
|
16
|
+
assert response.headers.include?('Last-Modified')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'produces a body that can be iterated over multiple times' do
|
20
|
+
env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}")
|
21
|
+
status, headers, body = @app.call(env)
|
22
|
+
buf1, buf2 = [], []
|
23
|
+
body.each { |part| buf1 << part }
|
24
|
+
body.each { |part| buf2 << part }
|
25
|
+
assert_equal buf1.join, buf2.join
|
26
|
+
assert_equal File.read(__FILE__), buf1.join
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'serves HEAD requests for files in the public directory' do
|
30
|
+
head "/#{File.basename(__FILE__)}"
|
31
|
+
assert ok?
|
32
|
+
assert_equal '', body
|
33
|
+
assert_equal File.size(__FILE__).to_s, response['Content-Length']
|
34
|
+
assert response.headers.include?('Last-Modified')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'serves files in preference to custom routes' do
|
38
|
+
@app.get("/#{File.basename(__FILE__)}") { 'Hello World' }
|
39
|
+
get "/#{File.basename(__FILE__)}"
|
40
|
+
assert ok?
|
41
|
+
assert body != 'Hello World'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'does not serve directories' do
|
45
|
+
get "/"
|
46
|
+
assert not_found?
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'passes to the next handler when the static option is disabled' do
|
50
|
+
@app.set :static, false
|
51
|
+
get "/#{File.basename(__FILE__)}"
|
52
|
+
assert not_found?
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'passes to the next handler when the public option is nil' do
|
56
|
+
@app.set :public, nil
|
57
|
+
get "/#{File.basename(__FILE__)}"
|
58
|
+
assert not_found?
|
59
|
+
end
|
60
|
+
|
61
|
+
it '404s when a file is not found' do
|
62
|
+
get "/foobarbaz.txt"
|
63
|
+
assert not_found?
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
describe 'Templating' do
|
4
|
+
def render_app(&block)
|
5
|
+
mock_app {
|
6
|
+
def render_test(template, data, options, &block)
|
7
|
+
inner = block ? block.call : ''
|
8
|
+
data + inner
|
9
|
+
end
|
10
|
+
set :views, File.dirname(__FILE__) + '/views'
|
11
|
+
get '/', &block
|
12
|
+
template(:layout3) { "Layout 3!\n" }
|
13
|
+
}
|
14
|
+
get '/'
|
15
|
+
end
|
16
|
+
|
17
|
+
def with_default_layout
|
18
|
+
layout = File.dirname(__FILE__) + '/views/layout.test'
|
19
|
+
File.open(layout, 'wb') { |io| io.write "Layout!\n" }
|
20
|
+
yield
|
21
|
+
ensure
|
22
|
+
File.unlink(layout) rescue nil
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'renders String templates directly' do
|
26
|
+
render_app { render :test, 'Hello World' }
|
27
|
+
assert ok?
|
28
|
+
assert_equal 'Hello World', body
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'renders Proc templates using the call result' do
|
32
|
+
render_app { render :test, Proc.new {'Hello World'} }
|
33
|
+
assert ok?
|
34
|
+
assert_equal 'Hello World', body
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'looks up Symbol templates in views directory' do
|
38
|
+
render_app { render :test, :hello }
|
39
|
+
assert ok?
|
40
|
+
assert_equal "Hello World!\n", body
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'uses the default layout template if not explicitly overridden' do
|
44
|
+
with_default_layout do
|
45
|
+
render_app { render :test, :hello }
|
46
|
+
assert ok?
|
47
|
+
assert_equal "Layout!\nHello World!\n", body
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'uses the default layout template if not really overriden' do
|
52
|
+
with_default_layout do
|
53
|
+
render_app { render :test, :hello, :layout => true }
|
54
|
+
assert ok?
|
55
|
+
assert_equal "Layout!\nHello World!\n", body
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'uses the layout template specified' do
|
60
|
+
render_app { render :test, :hello, :layout => :layout2 }
|
61
|
+
assert ok?
|
62
|
+
assert_equal "Layout 2!\nHello World!\n", body
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'uses layout templates defined with the #template method' do
|
66
|
+
render_app { render :test, :hello, :layout => :layout3 }
|
67
|
+
assert ok?
|
68
|
+
assert_equal "Layout 3!\nHello World!\n", body
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'loads templates from source file with use_in_file_templates!' do
|
72
|
+
mock_app {
|
73
|
+
use_in_file_templates!
|
74
|
+
}
|
75
|
+
assert_equal "this is foo\n\n", @app.templates[:foo]
|
76
|
+
assert_equal "X\n= yield\nX\n", @app.templates[:layout]
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
__END__
|
81
|
+
|
82
|
+
@@ foo
|
83
|
+
this is foo
|
84
|
+
|
85
|
+
@@ layout
|
86
|
+
X
|
87
|
+
= yield
|
88
|
+
X
|
data/test/test_test.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require File.dirname(__FILE__) + '/helper'
|
3
|
+
|
4
|
+
describe 'Sinatra::Test' do
|
5
|
+
def request
|
6
|
+
YAML.load(body)
|
7
|
+
end
|
8
|
+
|
9
|
+
def request_body
|
10
|
+
request['test.body']
|
11
|
+
end
|
12
|
+
|
13
|
+
def request_params
|
14
|
+
YAML.load(request['test.params'])
|
15
|
+
end
|
16
|
+
|
17
|
+
before do
|
18
|
+
mock_app {
|
19
|
+
%w[get head post put delete].each { |verb|
|
20
|
+
send(verb, '/') do
|
21
|
+
redirect '/redirected' if params[:redirect]
|
22
|
+
env.update('test.body' => request.body.read)
|
23
|
+
env.update('test.params' => params.to_yaml)
|
24
|
+
env.to_yaml
|
25
|
+
end
|
26
|
+
}
|
27
|
+
|
28
|
+
get '/redirected' do
|
29
|
+
"you've been redirected"
|
30
|
+
end
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'allows GET/HEAD/POST/PUT/DELETE' do
|
35
|
+
get '/'
|
36
|
+
assert_equal('GET', request['REQUEST_METHOD'])
|
37
|
+
|
38
|
+
post '/'
|
39
|
+
assert_equal('POST', request['REQUEST_METHOD'])
|
40
|
+
|
41
|
+
put '/'
|
42
|
+
assert_equal('PUT', request['REQUEST_METHOD'])
|
43
|
+
|
44
|
+
delete '/'
|
45
|
+
assert_equal('DELETE', request['REQUEST_METHOD'])
|
46
|
+
|
47
|
+
head '/'
|
48
|
+
assert_equal('0', headers['Content-Length'])
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'allows to specify a body' do
|
52
|
+
post '/', '42'
|
53
|
+
assert_equal '42', request_body
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'allows to specify params' do
|
57
|
+
get '/', :foo => 'bar'
|
58
|
+
assert_equal 'bar', request_params['foo']
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'supports nested params' do
|
62
|
+
get '/', :foo => { :x => 'y', :chunky => 'bacon' }
|
63
|
+
assert_equal "y", request_params['foo']['x']
|
64
|
+
assert_equal "bacon", request_params['foo']['chunky']
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'provides easy access to response status and body' do
|
68
|
+
get '/'
|
69
|
+
assert_equal 200, status
|
70
|
+
assert body =~ /^---/
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'delegates methods to @response' do
|
74
|
+
get '/'
|
75
|
+
assert ok?
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'follows redirect' do
|
79
|
+
get '/', :redirect => true
|
80
|
+
follow!
|
81
|
+
assert_equal "you've been redirected", body
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'provides sugar for common HTTP headers' do
|
85
|
+
get '/', :env => { :accept => 'text/plain' }
|
86
|
+
assert_equal 'text/plain', request['HTTP_ACCEPT']
|
87
|
+
|
88
|
+
get '/', :env => { :agent => 'TATFT' }
|
89
|
+
assert_equal 'TATFT', request['HTTP_USER_AGENT']
|
90
|
+
|
91
|
+
get '/', :env => { :host => '1.2.3.4' }
|
92
|
+
assert_equal '1.2.3.4', request['HTTP_HOST']
|
93
|
+
|
94
|
+
get '/', :env => { :session => 'foo' }
|
95
|
+
assert_equal 'foo', request['HTTP_COOKIE']
|
96
|
+
|
97
|
+
get '/', :env => { :cookies => 'foo' }
|
98
|
+
assert_equal 'foo', request['HTTP_COOKIE']
|
99
|
+
|
100
|
+
get '/', :env => { :content_type => 'text/plain' }
|
101
|
+
assert_equal 'text/plain', request['CONTENT_TYPE']
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_TestHarness
|
105
|
+
session = Sinatra::TestHarness.new(@app)
|
106
|
+
response = session.get('/')
|
107
|
+
assert_equal 200, response.status
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
xml.exclaim "You're my boy, #{@name}!"
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello <%= 'World' %>
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 Hello From Haml
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello World!
|
@@ -0,0 +1 @@
|
|
1
|
+
Layout 2!
|
metadata
ADDED
@@ -0,0 +1,184 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: darkhelmet-sinatra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Blake Mizerany
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-10 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.9.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.1
|
34
|
+
- - <
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: "1.0"
|
37
|
+
version:
|
38
|
+
description: Classy web-development dressed in a DSL
|
39
|
+
email: sinatrarb@googlegroups.com
|
40
|
+
executables: []
|
41
|
+
|
42
|
+
extensions: []
|
43
|
+
|
44
|
+
extra_rdoc_files:
|
45
|
+
- README.rdoc
|
46
|
+
- LICENSE
|
47
|
+
files:
|
48
|
+
- AUTHORS
|
49
|
+
- CHANGES
|
50
|
+
- LICENSE
|
51
|
+
- README.rdoc
|
52
|
+
- Rakefile
|
53
|
+
- compat/app_test.rb
|
54
|
+
- compat/application_test.rb
|
55
|
+
- compat/builder_test.rb
|
56
|
+
- compat/compat_test.rb
|
57
|
+
- compat/custom_error_test.rb
|
58
|
+
- compat/erb_test.rb
|
59
|
+
- compat/events_test.rb
|
60
|
+
- compat/filter_test.rb
|
61
|
+
- compat/haml_test.rb
|
62
|
+
- compat/helper.rb
|
63
|
+
- compat/mapped_error_test.rb
|
64
|
+
- compat/pipeline_test.rb
|
65
|
+
- compat/public/foo.xml
|
66
|
+
- compat/sass_test.rb
|
67
|
+
- compat/sessions_test.rb
|
68
|
+
- compat/streaming_test.rb
|
69
|
+
- compat/sym_params_test.rb
|
70
|
+
- compat/template_test.rb
|
71
|
+
- compat/use_in_file_templates_test.rb
|
72
|
+
- compat/views/foo.builder
|
73
|
+
- compat/views/foo.erb
|
74
|
+
- compat/views/foo.haml
|
75
|
+
- compat/views/foo.sass
|
76
|
+
- compat/views/foo_layout.erb
|
77
|
+
- compat/views/foo_layout.haml
|
78
|
+
- compat/views/layout_test/foo.builder
|
79
|
+
- compat/views/layout_test/foo.erb
|
80
|
+
- compat/views/layout_test/foo.haml
|
81
|
+
- compat/views/layout_test/foo.sass
|
82
|
+
- compat/views/layout_test/layout.builder
|
83
|
+
- compat/views/layout_test/layout.erb
|
84
|
+
- compat/views/layout_test/layout.haml
|
85
|
+
- compat/views/layout_test/layout.sass
|
86
|
+
- compat/views/no_layout/no_layout.builder
|
87
|
+
- compat/views/no_layout/no_layout.haml
|
88
|
+
- lib/sinatra.rb
|
89
|
+
- lib/sinatra/base.rb
|
90
|
+
- lib/sinatra/compat.rb
|
91
|
+
- lib/sinatra/images/404.png
|
92
|
+
- lib/sinatra/images/500.png
|
93
|
+
- lib/sinatra/main.rb
|
94
|
+
- lib/sinatra/test.rb
|
95
|
+
- lib/sinatra/test/bacon.rb
|
96
|
+
- lib/sinatra/test/rspec.rb
|
97
|
+
- lib/sinatra/test/spec.rb
|
98
|
+
- lib/sinatra/test/unit.rb
|
99
|
+
- sinatra.gemspec
|
100
|
+
- test/base_test.rb
|
101
|
+
- test/builder_test.rb
|
102
|
+
- test/data/reload_app_file.rb
|
103
|
+
- test/erb_test.rb
|
104
|
+
- test/extensions_test.rb
|
105
|
+
- test/filter_test.rb
|
106
|
+
- test/haml_test.rb
|
107
|
+
- test/helper.rb
|
108
|
+
- test/helpers_test.rb
|
109
|
+
- test/mapped_error_test.rb
|
110
|
+
- test/middleware_test.rb
|
111
|
+
- test/options_test.rb
|
112
|
+
- test/reload_test.rb
|
113
|
+
- test/request_test.rb
|
114
|
+
- test/response_test.rb
|
115
|
+
- test/result_test.rb
|
116
|
+
- test/routing_test.rb
|
117
|
+
- test/sass_test.rb
|
118
|
+
- test/server_test.rb
|
119
|
+
- test/sinatra_test.rb
|
120
|
+
- test/static_test.rb
|
121
|
+
- test/templates_test.rb
|
122
|
+
- test/test_test.rb
|
123
|
+
- test/views/hello.builder
|
124
|
+
- test/views/hello.erb
|
125
|
+
- test/views/hello.haml
|
126
|
+
- test/views/hello.sass
|
127
|
+
- test/views/hello.test
|
128
|
+
- test/views/layout2.builder
|
129
|
+
- test/views/layout2.erb
|
130
|
+
- test/views/layout2.haml
|
131
|
+
- test/views/layout2.test
|
132
|
+
has_rdoc: true
|
133
|
+
homepage: http://sinatra.rubyforge.org
|
134
|
+
post_install_message:
|
135
|
+
rdoc_options:
|
136
|
+
- --line-numbers
|
137
|
+
- --inline-source
|
138
|
+
- --title
|
139
|
+
- Sinatra
|
140
|
+
- --main
|
141
|
+
- README.rdoc
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: "0"
|
149
|
+
version:
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: "0"
|
155
|
+
version:
|
156
|
+
requirements: []
|
157
|
+
|
158
|
+
rubyforge_project: sinatra
|
159
|
+
rubygems_version: 1.2.0
|
160
|
+
signing_key:
|
161
|
+
specification_version: 2
|
162
|
+
summary: Classy web-development dressed in a DSL
|
163
|
+
test_files:
|
164
|
+
- test/base_test.rb
|
165
|
+
- test/builder_test.rb
|
166
|
+
- test/erb_test.rb
|
167
|
+
- test/extensions_test.rb
|
168
|
+
- test/filter_test.rb
|
169
|
+
- test/haml_test.rb
|
170
|
+
- test/helpers_test.rb
|
171
|
+
- test/mapped_error_test.rb
|
172
|
+
- test/middleware_test.rb
|
173
|
+
- test/options_test.rb
|
174
|
+
- test/reload_test.rb
|
175
|
+
- test/request_test.rb
|
176
|
+
- test/response_test.rb
|
177
|
+
- test/result_test.rb
|
178
|
+
- test/routing_test.rb
|
179
|
+
- test/sass_test.rb
|
180
|
+
- test/server_test.rb
|
181
|
+
- test/sinatra_test.rb
|
182
|
+
- test/static_test.rb
|
183
|
+
- test/templates_test.rb
|
184
|
+
- test/test_test.rb
|