deas 0.23.4 → 0.24.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/deas/runner.rb +2 -1
- data/lib/deas/sinatra_runner.rb +10 -2
- data/lib/deas/template.rb +3 -0
- data/lib/deas/test_runner.rb +9 -8
- data/lib/deas/version.rb +1 -1
- data/lib/deas/view_handler.rb +1 -0
- data/test/support/fake_sinatra_call.rb +16 -8
- data/test/support/routes.rb +8 -0
- data/test/support/view_handlers.rb +8 -0
- data/test/system/rack_tests.rb +7 -0
- data/test/unit/runner_tests.rb +18 -21
- data/test/unit/sinatra_runner_tests.rb +26 -21
- data/test/unit/test_runner_tests.rb +21 -6
- data/test/unit/view_handler_tests.rb +9 -3
- metadata +27 -27
data/lib/deas/runner.rb
CHANGED
@@ -2,7 +2,7 @@ module Deas
|
|
2
2
|
|
3
3
|
class Runner
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :handler_class, :handler
|
6
6
|
attr_reader :request, :response, :params, :logger, :session
|
7
7
|
|
8
8
|
def initialize(handler_class)
|
@@ -16,6 +16,7 @@ module Deas
|
|
16
16
|
def status(*args); raise NotImplementedError; end
|
17
17
|
def headers(*args); raise NotImplementedError; end
|
18
18
|
def render(*args); raise NotImplementedError; end
|
19
|
+
def partial(*args); raise NotImplementedError; end
|
19
20
|
def send_file(*args); raise NotImplementedError; end
|
20
21
|
|
21
22
|
end
|
data/lib/deas/sinatra_runner.rb
CHANGED
@@ -9,14 +9,18 @@ module Deas
|
|
9
9
|
self.new(*args).run
|
10
10
|
end
|
11
11
|
|
12
|
+
attr_reader :app_settings
|
13
|
+
|
12
14
|
def initialize(handler_class, sinatra_call)
|
13
15
|
@sinatra_call = sinatra_call
|
14
16
|
@app_settings = @sinatra_call.settings
|
15
|
-
|
16
|
-
@params = normalize_params(@sinatra_call.params)
|
17
|
+
|
17
18
|
@request = @sinatra_call.request
|
18
19
|
@response = @sinatra_call.response
|
20
|
+
@params = normalize_params(@sinatra_call.params)
|
21
|
+
@logger = @sinatra_call.settings.logger
|
19
22
|
@session = @sinatra_call.session
|
23
|
+
|
20
24
|
super(handler_class)
|
21
25
|
end
|
22
26
|
|
@@ -67,6 +71,10 @@ module Deas
|
|
67
71
|
Deas::Template.new(@sinatra_call, template_name, options).render(&block)
|
68
72
|
end
|
69
73
|
|
74
|
+
def partial(partial_name, locals = nil)
|
75
|
+
Deas::Template::Partial.new(@sinatra_call, partial_name, locals).render
|
76
|
+
end
|
77
|
+
|
70
78
|
def send_file(*args, &block)
|
71
79
|
@sinatra_call.send_file(*args, &block)
|
72
80
|
end
|
data/lib/deas/template.rb
CHANGED
@@ -40,7 +40,9 @@ module Deas
|
|
40
40
|
end
|
41
41
|
|
42
42
|
class Scope
|
43
|
+
|
43
44
|
attr_reader :sinatra_call
|
45
|
+
|
44
46
|
def initialize(sinatra_call)
|
45
47
|
@sinatra_call = sinatra_call
|
46
48
|
end
|
@@ -71,6 +73,7 @@ module Deas
|
|
71
73
|
self.sinatra_call == other_scope.sinatra_call
|
72
74
|
self.class.included_modules == other_scope.class.included_modules
|
73
75
|
end
|
76
|
+
|
74
77
|
end
|
75
78
|
|
76
79
|
class Partial < Template
|
data/lib/deas/test_runner.rb
CHANGED
@@ -6,15 +6,16 @@ module Deas
|
|
6
6
|
|
7
7
|
class TestRunner < Runner
|
8
8
|
|
9
|
-
attr_reader :
|
9
|
+
attr_reader :app_settings, :return_value
|
10
10
|
|
11
11
|
def initialize(handler_class, args = nil)
|
12
12
|
args = (args || {}).dup
|
13
13
|
@app_settings = OpenStruct.new(args.delete(:app_settings))
|
14
|
-
|
15
|
-
@params = normalize_params(args.delete(:params) || {})
|
14
|
+
|
16
15
|
@request = args.delete(:request)
|
17
16
|
@response = args.delete(:response)
|
17
|
+
@params = normalize_params(args.delete(:params) || {})
|
18
|
+
@logger = args.delete(:logger) || Deas::NullLogger.new
|
18
19
|
@session = args.delete(:session)
|
19
20
|
|
20
21
|
super(handler_class)
|
@@ -54,31 +55,31 @@ module Deas
|
|
54
55
|
def content_type(value, opts={})
|
55
56
|
ContentTypeArgs.new(value, opts)
|
56
57
|
end
|
57
|
-
|
58
58
|
ContentTypeArgs = Struct.new(:value, :opts)
|
59
59
|
|
60
60
|
def status(value)
|
61
61
|
StatusArgs.new(value)
|
62
62
|
end
|
63
|
-
|
64
63
|
StatusArgs = Struct.new(:value)
|
65
64
|
|
66
65
|
def headers(value)
|
67
66
|
HeadersArgs.new(value)
|
68
67
|
end
|
69
|
-
|
70
68
|
HeadersArgs = Struct.new(:value)
|
71
69
|
|
72
70
|
def render(template_name, options = nil, &block)
|
73
71
|
RenderArgs.new(template_name, options, block)
|
74
72
|
end
|
75
|
-
|
76
73
|
RenderArgs = Struct.new(:template_name, :options, :block)
|
77
74
|
|
75
|
+
def partial(partial_name, locals = nil)
|
76
|
+
PartialArgs.new(partial_name, locals)
|
77
|
+
end
|
78
|
+
PartialArgs = Struct.new(:partial_name, :locals)
|
79
|
+
|
78
80
|
def send_file(file_path, options = nil, &block)
|
79
81
|
SendFileArgs.new(file_path, options, block)
|
80
82
|
end
|
81
|
-
|
82
83
|
SendFileArgs = Struct.new(:file_path, :options, :block)
|
83
84
|
|
84
85
|
private
|
data/lib/deas/version.rb
CHANGED
data/lib/deas/view_handler.rb
CHANGED
@@ -54,6 +54,7 @@ module Deas
|
|
54
54
|
def headers(*args); @deas_runner.headers(*args); end
|
55
55
|
|
56
56
|
def render(*args, &block); @deas_runner.render(*args, &block); end
|
57
|
+
def partial(*args, &block); @deas_runner.partial(*args, &block); end
|
57
58
|
def send_file(*args, &block); @deas_runner.send_file(*args, &block); end
|
58
59
|
|
59
60
|
def app_settings; @deas_runner.app_settings; end
|
@@ -9,15 +9,16 @@ class FakeSinatraCall
|
|
9
9
|
attr_accessor :request, :response, :params, :settings, :session, :logger
|
10
10
|
|
11
11
|
def initialize(settings={})
|
12
|
-
@request = FakeRequest.new('GET','/something', {}, OpenStruct.new)
|
13
|
-
@params = @request.params
|
14
|
-
@session = @request.session
|
15
|
-
@response = FakeResponse.new
|
16
|
-
@logger = Deas::NullLogger.new
|
17
12
|
@settings = OpenStruct.new(settings.merge({
|
18
13
|
:deas_template_scope => Deas::Template::Scope,
|
19
14
|
:deas_default_charset => 'utf-8'
|
20
15
|
}))
|
16
|
+
|
17
|
+
@request = FakeRequest.new('GET','/something', {}, OpenStruct.new)
|
18
|
+
@response = FakeResponse.new
|
19
|
+
@params = @request.params
|
20
|
+
@logger = Deas::NullLogger.new
|
21
|
+
@session = @request.session
|
21
22
|
end
|
22
23
|
|
23
24
|
def halt(*args)
|
@@ -33,9 +34,6 @@ class FakeSinatraCall
|
|
33
34
|
def headers(*args); args; end
|
34
35
|
|
35
36
|
# return the template name for each nested calls
|
36
|
-
|
37
|
-
RenderArgs = Struct.new(:template_name, :opts, :block_call_result)
|
38
|
-
|
39
37
|
def erb(template_name, opts, &block)
|
40
38
|
if block
|
41
39
|
RenderArgs.new(template_name, opts, block.call)
|
@@ -43,6 +41,16 @@ class FakeSinatraCall
|
|
43
41
|
RenderArgs.new(template_name, opts, nil)
|
44
42
|
end
|
45
43
|
end
|
44
|
+
RenderArgs = Struct.new(:template_name, :opts, :block_call_result)
|
45
|
+
|
46
|
+
def send_file(file_path, opts, &block)
|
47
|
+
if block
|
48
|
+
SendFileArgs.new(file_path, opts, block.call)
|
49
|
+
else
|
50
|
+
SendFileArgs.new(file_path, opts, nil)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
SendFileArgs = Struct.new(:file_path, :options, :block_call_result)
|
46
54
|
|
47
55
|
end
|
48
56
|
|
data/test/support/routes.rb
CHANGED
@@ -37,6 +37,7 @@ class DeasTestServer
|
|
37
37
|
get '/haml_with_layout', 'HamlWithLayoutHandler'
|
38
38
|
get '/with_haml_layout', 'WithHamlLayoutHandler'
|
39
39
|
get '/haml_with_haml_layout', 'HamlWithHamlLayoutHandler'
|
40
|
+
get '/partial.html', 'PartialHandler'
|
40
41
|
|
41
42
|
get '/handler/tests.json', 'HandlerTestsHandler'
|
42
43
|
|
@@ -194,6 +195,13 @@ class HamlWithHamlLayoutHandler
|
|
194
195
|
|
195
196
|
end
|
196
197
|
|
198
|
+
class PartialHandler
|
199
|
+
include Deas::ViewHandler
|
200
|
+
|
201
|
+
def run!; partial 'info', :info => 'some-info'; end
|
202
|
+
|
203
|
+
end
|
204
|
+
|
197
205
|
class RedirectHandler
|
198
206
|
include Deas::ViewHandler
|
199
207
|
|
data/test/system/rack_tests.rb
CHANGED
@@ -96,6 +96,13 @@ module Deas
|
|
96
96
|
assert_equal expected_body, last_response.body
|
97
97
|
end
|
98
98
|
|
99
|
+
should "render partial templates" do
|
100
|
+
get '/partial.html'
|
101
|
+
expected_body = "Stuff: some-info\n"
|
102
|
+
assert_equal 200, last_response.status
|
103
|
+
assert_equal expected_body, last_response.body
|
104
|
+
end
|
105
|
+
|
99
106
|
should "return a 302 redirecting to the expected locations" do
|
100
107
|
get '/redirect'
|
101
108
|
expected_location = 'http://google.com'
|
data/test/unit/runner_tests.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'assert'
|
2
|
-
require 'test/support/view_handlers'
|
3
2
|
require 'deas/runner'
|
4
3
|
|
4
|
+
require 'test/support/view_handlers'
|
5
|
+
|
5
6
|
class Deas::Runner
|
6
7
|
|
7
8
|
class BaseTests < Assert::Context
|
@@ -11,37 +12,33 @@ class Deas::Runner
|
|
11
12
|
end
|
12
13
|
subject{ @runner }
|
13
14
|
|
14
|
-
should
|
15
|
+
should have_readers :handler_class, :handler
|
15
16
|
should have_readers :request, :response, :params, :logger, :session
|
16
|
-
should have_imeths :halt, :redirect, :content_type, :status
|
17
|
-
should have_imeths :render, :send_file
|
17
|
+
should have_imeths :halt, :redirect, :content_type, :status, :headers
|
18
|
+
should have_imeths :render, :partial, :send_file
|
18
19
|
|
19
|
-
should "
|
20
|
-
|
20
|
+
should "know its handler and handler class" do
|
21
|
+
assert_equal TestViewHandler, subject.handler_class
|
22
|
+
assert_instance_of subject.handler_class, subject.handler
|
21
23
|
end
|
22
24
|
|
23
|
-
should "
|
24
|
-
|
25
|
+
should "not set any settings" do
|
26
|
+
assert_nil subject.request
|
27
|
+
assert_nil subject.response
|
28
|
+
assert_nil subject.params
|
29
|
+
assert_nil subject.logger
|
30
|
+
assert_nil subject.session
|
25
31
|
end
|
26
32
|
|
27
|
-
should "
|
33
|
+
should "not implement any actions" do
|
34
|
+
assert_raises(NotImplementedError){ subject.halt }
|
28
35
|
assert_raises(NotImplementedError){ subject.redirect }
|
29
|
-
end
|
30
|
-
|
31
|
-
should "raise NotImplementedError with #content_type" do
|
32
36
|
assert_raises(NotImplementedError){ subject.content_type }
|
33
|
-
end
|
34
|
-
|
35
|
-
should "raise NotImplementedError with #status" do
|
36
37
|
assert_raises(NotImplementedError){ subject.status }
|
37
|
-
end
|
38
|
-
|
39
|
-
should "raise NotImplementedError with #headers" do
|
40
38
|
assert_raises(NotImplementedError){ subject.headers }
|
41
|
-
end
|
42
|
-
|
43
|
-
should "raise NotImplementedError with #render" do
|
44
39
|
assert_raises(NotImplementedError){ subject.render }
|
40
|
+
assert_raises(NotImplementedError){ subject.partial }
|
41
|
+
assert_raises(NotImplementedError){ subject.send_file }
|
45
42
|
end
|
46
43
|
|
47
44
|
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'assert'
|
2
|
+
require 'deas/sinatra_runner'
|
3
|
+
|
2
4
|
require 'test/support/fake_sinatra_call'
|
3
5
|
require 'test/support/view_handlers'
|
4
6
|
require 'deas/template'
|
5
|
-
require 'deas/sinatra_runner'
|
6
7
|
|
7
8
|
class Deas::SinatraRunner
|
8
9
|
|
@@ -14,35 +15,23 @@ class Deas::SinatraRunner
|
|
14
15
|
end
|
15
16
|
subject{ @runner }
|
16
17
|
|
17
|
-
should
|
18
|
-
should have_imeths :
|
18
|
+
should have_readers :app_settings
|
19
|
+
should have_imeths :run
|
19
20
|
|
20
|
-
should "
|
21
|
+
should "get its settings from the sinatra call" do
|
21
22
|
assert_equal @fake_sinatra_call.request, subject.request
|
22
|
-
end
|
23
|
-
|
24
|
-
should "return the sinatra_call's response with #response" do
|
25
23
|
assert_equal @fake_sinatra_call.response, subject.response
|
26
|
-
end
|
27
|
-
|
28
|
-
should "return the sinatra_call's params with #params" do
|
29
24
|
assert_equal @fake_sinatra_call.params, subject.params
|
30
|
-
end
|
31
|
-
|
32
|
-
should "return the sinatra_call's session with #session" do
|
33
|
-
assert_equal @fake_sinatra_call.session, subject.session
|
34
|
-
end
|
35
|
-
|
36
|
-
should "return the sinatra_call's settings logger with #logger" do
|
37
25
|
assert_equal @fake_sinatra_call.settings.deas_logger, subject.logger
|
26
|
+
assert_equal @fake_sinatra_call.session, subject.session
|
38
27
|
end
|
39
28
|
|
40
|
-
should "call the sinatra_call's halt with
|
29
|
+
should "call the sinatra_call's halt with" do
|
41
30
|
return_value = catch(:halt){ subject.halt('test') }
|
42
31
|
assert_equal [ 'test' ], return_value
|
43
32
|
end
|
44
33
|
|
45
|
-
should "call the sinatra_call's redirect method with
|
34
|
+
should "call the sinatra_call's redirect method with" do
|
46
35
|
return_value = catch(:halt){ subject.redirect('http://google.com') }
|
47
36
|
expected = [ 302, { 'Location' => 'http://google.com' } ]
|
48
37
|
|
@@ -61,7 +50,7 @@ class Deas::SinatraRunner
|
|
61
50
|
assert_equal [422], subject.status(422)
|
62
51
|
end
|
63
52
|
|
64
|
-
should "call the sinatra_call's
|
53
|
+
should "call the sinatra_call's headers to set the response headers" do
|
65
54
|
exp_headers = {
|
66
55
|
'a-header' => 'some value',
|
67
56
|
'other' => 'other'
|
@@ -69,7 +58,7 @@ class Deas::SinatraRunner
|
|
69
58
|
assert_equal [exp_headers], subject.headers(exp_headers)
|
70
59
|
end
|
71
60
|
|
72
|
-
should "render the template with a :view local and the handler layouts
|
61
|
+
should "render the template with a :view local and the handler layouts" do
|
73
62
|
exp_handler = FlagViewHandler.new(subject)
|
74
63
|
exp_layouts = FlagViewHandler.layouts
|
75
64
|
exp_result = Deas::Template.new(@fake_sinatra_call, 'index', {
|
@@ -80,6 +69,22 @@ class Deas::SinatraRunner
|
|
80
69
|
assert_equal exp_result, subject.render('index')
|
81
70
|
end
|
82
71
|
|
72
|
+
should "render partials with locals" do
|
73
|
+
exp_result = Deas::Template::Partial.new(@fake_sinatra_call, 'info', {
|
74
|
+
:some => 'locals'
|
75
|
+
}).render
|
76
|
+
|
77
|
+
assert_equal exp_result, subject.partial('info', :some => 'locals')
|
78
|
+
end
|
79
|
+
|
80
|
+
should "call the sinatra_call's send_file to set the send files" do
|
81
|
+
block_called = false
|
82
|
+
args = subject.send_file('a/file', {:some => 'opts'}, &proc{ block_called = true })
|
83
|
+
assert_equal 'a/file', args.file_path
|
84
|
+
assert_equal({:some => 'opts'}, args.options)
|
85
|
+
assert_true block_called
|
86
|
+
end
|
87
|
+
|
83
88
|
end
|
84
89
|
|
85
90
|
class RunTests < UnitTests
|
@@ -2,6 +2,7 @@ require 'assert'
|
|
2
2
|
require 'deas/test_runner'
|
3
3
|
|
4
4
|
require 'rack/test'
|
5
|
+
require 'deas/runner'
|
5
6
|
require 'test/support/view_handlers'
|
6
7
|
|
7
8
|
class Deas::TestRunner
|
@@ -13,18 +14,22 @@ class Deas::TestRunner
|
|
13
14
|
end
|
14
15
|
subject{ @runner }
|
15
16
|
|
16
|
-
should have_readers :
|
17
|
+
should have_readers :app_settings, :return_value
|
18
|
+
should have_imeths :run
|
17
19
|
|
18
|
-
should "
|
19
|
-
|
20
|
+
should "be a Runner" do
|
21
|
+
assert subject.class < Deas::Runner
|
20
22
|
end
|
21
23
|
|
22
|
-
should "
|
24
|
+
should "know its app_settings" do
|
23
25
|
assert_kind_of OpenStruct, subject.app_settings
|
24
|
-
|
25
|
-
|
26
|
+
end
|
27
|
+
|
28
|
+
should "default its settings" do
|
26
29
|
assert_nil subject.request
|
27
30
|
assert_nil subject.response
|
31
|
+
assert_equal Hash.new, subject.params
|
32
|
+
assert_kind_of Deas::NullLogger, subject.logger
|
28
33
|
assert_nil subject.session
|
29
34
|
end
|
30
35
|
|
@@ -94,6 +99,16 @@ class Deas::TestRunner
|
|
94
99
|
assert_equal 'some/template', value.template_name
|
95
100
|
end
|
96
101
|
|
102
|
+
should "build partial args if partial is called" do
|
103
|
+
value = subject.partial 'some/partial', :some => 'locals'
|
104
|
+
assert_kind_of PartialArgs, value
|
105
|
+
[:partial_name, :locals].each do |meth|
|
106
|
+
assert_respond_to meth, value
|
107
|
+
end
|
108
|
+
assert_equal 'some/partial', value.partial_name
|
109
|
+
assert_equal({:some => 'locals'}, value.locals)
|
110
|
+
end
|
111
|
+
|
97
112
|
should "build send file args if send file is called" do
|
98
113
|
value = subject.send_file 'some/file/path'
|
99
114
|
assert_kind_of SendFileArgs, value
|
@@ -23,17 +23,23 @@ module Deas::ViewHandler
|
|
23
23
|
should have_cmeths :before_run, :prepend_before_run, :before_run_callbacks
|
24
24
|
should have_cmeths :after_run, :prepend_after_run, :after_run_callbacks
|
25
25
|
|
26
|
-
should "
|
26
|
+
should "complain if run! is not overwritten" do
|
27
27
|
assert_raises(NotImplementedError){ subject.run! }
|
28
28
|
end
|
29
29
|
|
30
|
-
should "
|
30
|
+
should "render templates" do
|
31
31
|
render_args = test_runner(RenderViewHandler).run
|
32
32
|
assert_equal "my_template", render_args.template_name
|
33
33
|
assert_equal({ :some => :option }, render_args.options)
|
34
34
|
end
|
35
35
|
|
36
|
-
should "
|
36
|
+
should "render partial templates" do
|
37
|
+
partial_args = test_runner(PartialViewHandler).run
|
38
|
+
assert_equal "my_partial", partial_args.partial_name
|
39
|
+
assert_equal({:some => 'locals'}, partial_args.locals)
|
40
|
+
end
|
41
|
+
|
42
|
+
should "send files" do
|
37
43
|
send_file_args = test_runner(SendFileViewHandler).run
|
38
44
|
assert_equal "my_file.txt", send_file_args.file_path
|
39
45
|
assert_equal({ :some => :option }, send_file_args.options)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 127
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 24
|
9
|
+
- 0
|
10
|
+
version: 0.24.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,11 +16,9 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2014-
|
19
|
+
date: 2014-06-24 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
|
-
type: :runtime
|
24
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
23
|
none: false
|
26
24
|
requirements:
|
@@ -39,11 +37,11 @@ dependencies:
|
|
39
37
|
- 1
|
40
38
|
- 4
|
41
39
|
version: 1.1.4
|
42
|
-
|
40
|
+
type: :runtime
|
43
41
|
name: ns-options
|
44
|
-
|
42
|
+
version_requirements: *id001
|
45
43
|
prerelease: false
|
46
|
-
|
44
|
+
- !ruby/object:Gem::Dependency
|
47
45
|
requirement: &id002 !ruby/object:Gem::Requirement
|
48
46
|
none: false
|
49
47
|
requirements:
|
@@ -54,11 +52,11 @@ dependencies:
|
|
54
52
|
- 1
|
55
53
|
- 5
|
56
54
|
version: "1.5"
|
57
|
-
|
55
|
+
type: :runtime
|
58
56
|
name: rack
|
59
|
-
|
57
|
+
version_requirements: *id002
|
60
58
|
prerelease: false
|
61
|
-
|
59
|
+
- !ruby/object:Gem::Dependency
|
62
60
|
requirement: &id003 !ruby/object:Gem::Requirement
|
63
61
|
none: false
|
64
62
|
requirements:
|
@@ -69,11 +67,11 @@ dependencies:
|
|
69
67
|
- 1
|
70
68
|
- 4
|
71
69
|
version: "1.4"
|
72
|
-
|
70
|
+
type: :runtime
|
73
71
|
name: sinatra
|
74
|
-
|
72
|
+
version_requirements: *id003
|
75
73
|
prerelease: false
|
76
|
-
|
74
|
+
- !ruby/object:Gem::Dependency
|
77
75
|
requirement: &id004 !ruby/object:Gem::Requirement
|
78
76
|
none: false
|
79
77
|
requirements:
|
@@ -84,11 +82,11 @@ dependencies:
|
|
84
82
|
- 2
|
85
83
|
- 8
|
86
84
|
version: "2.8"
|
87
|
-
|
85
|
+
type: :development
|
88
86
|
name: assert
|
89
|
-
|
87
|
+
version_requirements: *id004
|
90
88
|
prerelease: false
|
91
|
-
|
89
|
+
- !ruby/object:Gem::Dependency
|
92
90
|
requirement: &id005 !ruby/object:Gem::Requirement
|
93
91
|
none: false
|
94
92
|
requirements:
|
@@ -98,11 +96,11 @@ dependencies:
|
|
98
96
|
segments:
|
99
97
|
- 0
|
100
98
|
version: "0"
|
101
|
-
|
99
|
+
type: :development
|
102
100
|
name: assert-mocha
|
103
|
-
|
101
|
+
version_requirements: *id005
|
104
102
|
prerelease: false
|
105
|
-
|
103
|
+
- !ruby/object:Gem::Dependency
|
106
104
|
requirement: &id006 !ruby/object:Gem::Requirement
|
107
105
|
none: false
|
108
106
|
requirements:
|
@@ -112,11 +110,11 @@ dependencies:
|
|
112
110
|
segments:
|
113
111
|
- 0
|
114
112
|
version: "0"
|
115
|
-
|
113
|
+
type: :development
|
116
114
|
name: assert-rack-test
|
117
|
-
|
115
|
+
version_requirements: *id006
|
118
116
|
prerelease: false
|
119
|
-
|
117
|
+
- !ruby/object:Gem::Dependency
|
120
118
|
requirement: &id007 !ruby/object:Gem::Requirement
|
121
119
|
none: false
|
122
120
|
requirements:
|
@@ -126,8 +124,10 @@ dependencies:
|
|
126
124
|
segments:
|
127
125
|
- 0
|
128
126
|
version: "0"
|
129
|
-
|
127
|
+
type: :development
|
130
128
|
name: haml
|
129
|
+
version_requirements: *id007
|
130
|
+
prerelease: false
|
131
131
|
description: Handler-based web framework powered by Sinatra
|
132
132
|
email:
|
133
133
|
- kelly@kellyredding.com
|
@@ -234,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
234
|
requirements: []
|
235
235
|
|
236
236
|
rubyforge_project:
|
237
|
-
rubygems_version: 1.8.
|
237
|
+
rubygems_version: 1.8.25
|
238
238
|
signing_key:
|
239
239
|
specification_version: 3
|
240
240
|
summary: Handler-based web framework powered by Sinatra
|