racket-mvc 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/racket/application.rb +1 -1
- data/lib/racket/helpers/file.rb +55 -0
- data/lib/racket/helpers/routing.rb +2 -2
- data/lib/racket/request.rb +31 -6
- data/lib/racket/router.rb +4 -3
- data/lib/racket/version.rb +3 -3
- data/lib/racket/view_cache.rb +4 -2
- data/spec/_custom.rb +40 -0
- data/spec/_default.rb +23 -1
- data/spec/_request.rb +49 -0
- data/spec/racket.rb +6 -0
- data/spec/test_custom_app/controllers/sub1/custom_sub_controller_1.rb +23 -1
- data/spec/test_custom_app/files/plain_text.txt +1 -0
- data/spec/test_default_app/controllers/default_root_controller.rb +1 -1
- data/spec/test_default_app/controllers/sub2/default_sub_controller_2.rb +16 -0
- metadata +11 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d06a12ceb8db8f9e2cafd0d649048e03da1e7644
|
|
4
|
+
data.tar.gz: 7534148f29e1c2c00b65800c4b1fa41ea3705a08
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a929335cdea51bbabbc0f0531de67cacf63177ec042f33dfd373454c2284e06603da7ee50b188584d76db7de02572bb99de0cbfdeb57259e903b2feb4d4470c0
|
|
7
|
+
data.tar.gz: bb0f3f128237c989d4937d612d5c0b6dc9d248f72e7233fc5900672526d9c72760816ba2fa53ed50c784bcb1dbf2e602b00237e9bca07a7a06d0e89afe2cbb18
|
data/README.md
CHANGED
|
@@ -29,7 +29,8 @@ Have a look in the `spec` directory. The code base have tests covering 100 per c
|
|
|
29
29
|
- ruby 2.0
|
|
30
30
|
- ruby 2.1.6
|
|
31
31
|
- ruby 2.2.2
|
|
32
|
-
- jruby (
|
|
32
|
+
- jruby 1.7 (1.9 mode only)
|
|
33
|
+
- jruby 9.0.0.0
|
|
33
34
|
- rbx-2 (latest version)
|
|
34
35
|
|
|
35
36
|
I am using [bacon](https://github.com/chneukirchen/bacon) and [rack-test](https://github.com/brynary/rack-test) for testing. Run the tests by typing `rake test`in the root directory. Code coverage reports are provided by [simplecov](https://rubygems.org/gems/simplecov). After the tests have run the an HTML report can be found in the `coverage` directory.
|
data/lib/racket/application.rb
CHANGED
|
@@ -100,7 +100,7 @@ module Racket
|
|
|
100
100
|
# @param [Symbol] action
|
|
101
101
|
# @param [Array] params
|
|
102
102
|
# @return [String]
|
|
103
|
-
def self.get_route(controller, action, params)
|
|
103
|
+
def self.get_route(controller, action = nil, *params)
|
|
104
104
|
@router.get_route(controller, action, params)
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Racket - The noisy Rack MVC framework
|
|
2
|
+
# Copyright (C) 2015 Lars Olsson <lasso@lassoweb.se>
|
|
3
|
+
#
|
|
4
|
+
# This file is part of Racket.
|
|
5
|
+
#
|
|
6
|
+
# Racket is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU Affero General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Racket is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU Affero General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
|
17
|
+
# along with Racket. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
module Racket
|
|
20
|
+
# Helpers module
|
|
21
|
+
module Helpers
|
|
22
|
+
# Helper module that handles files
|
|
23
|
+
module File
|
|
24
|
+
# Sends the contents of a file to the client.
|
|
25
|
+
#
|
|
26
|
+
# @param [String] file
|
|
27
|
+
# @param [Hash] options
|
|
28
|
+
# @return [Array]
|
|
29
|
+
def send_file(file, options = {})
|
|
30
|
+
file = Utils.build_path(file)
|
|
31
|
+
# Respond with a 404 Not Found if the file cannot be read.
|
|
32
|
+
respond!(
|
|
33
|
+
404,
|
|
34
|
+
{ 'Content-Type' => 'text/plain' },
|
|
35
|
+
Rack::Utils::HTTP_STATUS_CODES[404]
|
|
36
|
+
) unless Utils.file_readable? (file)
|
|
37
|
+
headers = {}
|
|
38
|
+
mime_type = options.fetch(:mime_type, nil)
|
|
39
|
+
# Calculate MIME type if it was not already specified.
|
|
40
|
+
mime_type = Rack::Mime.mime_type(::File.extname(file)) unless mime_type
|
|
41
|
+
headers['Content-Type'] = mime_type
|
|
42
|
+
# Set Content-Disposition (and a file name) if the file should be downloaded
|
|
43
|
+
# instead of displayed inline.
|
|
44
|
+
if options.fetch(:download, false)
|
|
45
|
+
filename = options.fetch(:filename, nil).to_s
|
|
46
|
+
headers['Content-Disposition'] = 'attachment'
|
|
47
|
+
headers['Content-Disposition'] << sprintf('; filename="%s"', filename) unless
|
|
48
|
+
filename.empty?
|
|
49
|
+
end
|
|
50
|
+
# Send response
|
|
51
|
+
respond!(200, headers, ::File.read(file))
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -27,7 +27,7 @@ module Racket
|
|
|
27
27
|
# @param [Symbol] action
|
|
28
28
|
# @param [Array] params
|
|
29
29
|
# @return [String]
|
|
30
|
-
def route(controller, action, *params)
|
|
30
|
+
def route(controller, action = nil, *params)
|
|
31
31
|
Application.get_route(controller, action, params)
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -38,7 +38,7 @@ module Racket
|
|
|
38
38
|
# @param [Symbol] action
|
|
39
39
|
# @param [Array] params
|
|
40
40
|
# @return [String]
|
|
41
|
-
def route_self(action, *params)
|
|
41
|
+
def route_self(action = nil, *params)
|
|
42
42
|
Application.get_route(self.class, action, params)
|
|
43
43
|
end
|
|
44
44
|
|
data/lib/racket/request.rb
CHANGED
|
@@ -17,14 +17,39 @@
|
|
|
17
17
|
# along with Racket. If not, see <http://www.gnu.org/licenses/>.
|
|
18
18
|
|
|
19
19
|
module Racket
|
|
20
|
-
# Represents an incoming request. Mostly matches Rack::Request but removes
|
|
21
|
-
#
|
|
20
|
+
# Represents an incoming request. Mostly matches Rack::Request but removes/redefines
|
|
21
|
+
# methods relating to GET/POST parameters and sessions.
|
|
22
22
|
class Request < Rack::Request
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
undef_method :params
|
|
23
|
+
# Remove methods that use merged GET and POST data.
|
|
24
|
+
undef_method :[], :[]=, :delete_param, :params, :update_param, :values_at
|
|
26
25
|
|
|
27
|
-
#
|
|
26
|
+
# Remove session methods.
|
|
28
27
|
undef_method :session, :session_options
|
|
28
|
+
|
|
29
|
+
# Redefine methods for handling GET parameters
|
|
30
|
+
alias_method(:get_params, :GET)
|
|
31
|
+
undef_method :GET
|
|
32
|
+
|
|
33
|
+
# Returns a value from the GET parameter hash.
|
|
34
|
+
#
|
|
35
|
+
# @param [Object] key
|
|
36
|
+
# @param [Object] default
|
|
37
|
+
# @return [Object]
|
|
38
|
+
def get(key, default = nil)
|
|
39
|
+
get_params.fetch(key.to_s, default)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Redefine methods for handling POST parameters
|
|
43
|
+
alias_method(:post_params, :POST)
|
|
44
|
+
undef_method :POST
|
|
45
|
+
|
|
46
|
+
# Returns a value from the POST parameter hash.
|
|
47
|
+
#
|
|
48
|
+
# @param [Object] key
|
|
49
|
+
# @param [Object] default
|
|
50
|
+
# @return [Object]
|
|
51
|
+
def post(key, default = nil)
|
|
52
|
+
post_params.fetch(key.to_s, default)
|
|
53
|
+
end
|
|
29
54
|
end
|
|
30
55
|
end
|
data/lib/racket/router.rb
CHANGED
|
@@ -51,10 +51,11 @@ module Racket
|
|
|
51
51
|
# @param [Array] params
|
|
52
52
|
# @return [String]
|
|
53
53
|
def get_route(controller, action, params)
|
|
54
|
+
fail "Cannot find controller #{controller}" unless @routes_by_controller.key?(controller)
|
|
55
|
+
params.flatten!
|
|
54
56
|
route = ''
|
|
55
|
-
route << @routes_by_controller[controller]
|
|
56
|
-
action
|
|
57
|
-
route << "/#{action}" unless action.empty?
|
|
57
|
+
route << @routes_by_controller[controller]
|
|
58
|
+
route << "/#{action}" unless action.nil?
|
|
58
59
|
route << "/#{params.join('/')}" unless params.empty?
|
|
59
60
|
route = route[1..-1] if route.start_with?('//') # Special case for root path
|
|
60
61
|
route
|
data/lib/racket/version.rb
CHANGED
|
@@ -23,10 +23,10 @@ module Racket
|
|
|
23
23
|
# Major version
|
|
24
24
|
MAJOR = 0
|
|
25
25
|
# Minor version
|
|
26
|
-
MINOR =
|
|
26
|
+
MINOR = 2
|
|
27
27
|
# Teeny version
|
|
28
|
-
TEENY =
|
|
29
|
-
#
|
|
28
|
+
TEENY = 0
|
|
29
|
+
# Is it a prerelease?
|
|
30
30
|
PRERELEASE = false
|
|
31
31
|
|
|
32
32
|
# Returns the current version of Racket as a string.
|
data/lib/racket/view_cache.rb
CHANGED
|
@@ -34,12 +34,14 @@ module Racket
|
|
|
34
34
|
# @param [Controller] controller
|
|
35
35
|
# @return [Hash]
|
|
36
36
|
def render(controller)
|
|
37
|
+
template_path = [Application.get_route(controller.class), controller.racket.action].join('/')
|
|
38
|
+
template_path = template_path[1..-1] if template_path.start_with?('//')
|
|
37
39
|
template =
|
|
38
|
-
find_template(
|
|
40
|
+
find_template(template_path, controller.controller_option(:default_view))
|
|
39
41
|
if template
|
|
40
42
|
output = Tilt.new(template).render(controller)
|
|
41
43
|
layout =
|
|
42
|
-
find_layout(
|
|
44
|
+
find_layout(template_path, controller.controller_option(:default_layout))
|
|
43
45
|
output = Tilt.new(layout).render(controller) { output } if layout
|
|
44
46
|
else
|
|
45
47
|
output = controller.racket.action_result
|
data/spec/_custom.rb
CHANGED
|
@@ -66,4 +66,44 @@ describe 'A custom Racket test Application' do
|
|
|
66
66
|
last_response.headers['Content-Type'].should.equal('text/html')
|
|
67
67
|
last_response.body.should.equal("The secret is 42!\n")
|
|
68
68
|
end
|
|
69
|
+
|
|
70
|
+
it 'should be able to send files with auto mime type' do
|
|
71
|
+
get '/sub1/send_existing_file_auto_mime'
|
|
72
|
+
last_response.status.should.equal(200)
|
|
73
|
+
last_response.headers['Content-Type'].should.equal('text/plain')
|
|
74
|
+
last_response.headers.key?('Content-Disposition').should.equal(false)
|
|
75
|
+
last_response.body.should.equal("This is plain text.\n")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'should be able to send files with custom mime type' do
|
|
79
|
+
get '/sub1/send_existing_file_custom_mime'
|
|
80
|
+
last_response.status.should.equal(200)
|
|
81
|
+
last_response.headers['Content-Type'].should.equal('text/skv')
|
|
82
|
+
last_response.headers.key?('Content-Disposition').should.equal(false)
|
|
83
|
+
last_response.body.should.equal("This is plain text.\n")
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'should be able to send unnamed files with Content-Disposition' do
|
|
87
|
+
get '/sub1/send_existing_file_unnamed_attachment'
|
|
88
|
+
last_response.status.should.equal(200)
|
|
89
|
+
last_response.headers['Content-Type'].should.equal('text/plain')
|
|
90
|
+
last_response.headers['Content-Disposition'].should.equal('attachment')
|
|
91
|
+
last_response.body.should.equal("This is plain text.\n")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'should be able to send named files with Content-Disposition' do
|
|
95
|
+
get '/sub1/send_existing_file_named_attachment'
|
|
96
|
+
last_response.status.should.equal(200)
|
|
97
|
+
last_response.headers['Content-Type'].should.equal('text/plain')
|
|
98
|
+
last_response.headers['Content-Disposition'].should.equal('attachment; filename="bazinga!.txt"')
|
|
99
|
+
last_response.body.should.equal("This is plain text.\n")
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'should respond with 404 when trying to send non-existing files' do
|
|
103
|
+
get '/sub1/send_nonexisting_file'
|
|
104
|
+
last_response.status.should.equal(404)
|
|
105
|
+
last_response.headers['Content-Type'].should.equal('text/plain')
|
|
106
|
+
last_response.headers.key?('Content-Disposition').should.equal(false)
|
|
107
|
+
last_response.body.should.equal("Not Found")
|
|
108
|
+
end
|
|
69
109
|
end
|
data/spec/_default.rb
CHANGED
|
@@ -31,7 +31,7 @@ describe 'A default Racket test Application' do
|
|
|
31
31
|
actions_by_controller[DefaultSubController1].length.should.equal(4)
|
|
32
32
|
actions_by_controller[DefaultSubController1].include?(:route_to_root).should.equal(true)
|
|
33
33
|
actions_by_controller[DefaultSubController1].include?(:route_to_nonexisting).should.equal(true)
|
|
34
|
-
actions_by_controller[DefaultSubController2].length.should.equal(
|
|
34
|
+
actions_by_controller[DefaultSubController2].length.should.equal(5)
|
|
35
35
|
actions_by_controller[DefaultSubController2].include?(:index).should.equal(true)
|
|
36
36
|
actions_by_controller[DefaultSubController2].include?(:current_action).should.equal(true)
|
|
37
37
|
actions_by_controller[DefaultSubController2].include?(:current_params).should.equal(true)
|
|
@@ -172,6 +172,28 @@ describe 'A default Racket test Application' do
|
|
|
172
172
|
)
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
+
it 'should handle GET parameters correctly' do
|
|
176
|
+
get '/sub2/get_some_data/?data1=foo&data3=bar'
|
|
177
|
+
last_response.status.should.equal(200)
|
|
178
|
+
response = JSON.parse(last_response.body, symbolize_names: true)
|
|
179
|
+
response.class.should.equal(Hash)
|
|
180
|
+
response.keys.sort.should.equal([:data1, :data2, :data3])
|
|
181
|
+
response[:data1].should.equal('foo')
|
|
182
|
+
response[:data2].should.equal(nil)
|
|
183
|
+
response[:data3].should.equal('bar')
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
it 'should handle POST parameters correctly' do
|
|
187
|
+
post '/sub2/post_some_data', { data1: 'foo', data3: 'bar' }
|
|
188
|
+
last_response.status.should.equal(200)
|
|
189
|
+
response = JSON.parse(last_response.body, symbolize_names: true)
|
|
190
|
+
response.class.should.equal(Hash)
|
|
191
|
+
response.keys.sort.should.equal([:data1, :data2, :data3])
|
|
192
|
+
response[:data1].should.equal('foo')
|
|
193
|
+
response[:data2].should.equal(nil)
|
|
194
|
+
response[:data3].should.equal('bar')
|
|
195
|
+
end
|
|
196
|
+
|
|
175
197
|
it 'should be able to serve static files' do
|
|
176
198
|
get '/hello.txt'
|
|
177
199
|
last_response.status.should.equal(200)
|
data/spec/_request.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
describe 'Racket::Request should override Rack::Request correctly' do
|
|
2
|
+
|
|
3
|
+
r = Racket::Request.new({}).freeze
|
|
4
|
+
|
|
5
|
+
describe 'Racket::Request should inherit some methods from Rack::Request' do
|
|
6
|
+
[
|
|
7
|
+
:accept_encoding, :accept_language, :base_url, :body, :content_charset, :content_length,
|
|
8
|
+
:content_type, :cookies, :delete?, :env, :form_data?, :fullpath, :get?, :head?, :host,
|
|
9
|
+
:host_with_port, :ip, :link?, :logger, :media_type, :media_type_params, :options?,
|
|
10
|
+
:parseable_data?, :patch?, :path, :path_info, :path_info=, :port, :post?, :put?,
|
|
11
|
+
:query_string, :referer, :referrer, :request_method, :scheme, :script_name, :script_name=,
|
|
12
|
+
:ssl?, :trace?, :trusted_proxy?, :unlink?, :url, :user_agent, :xhr?
|
|
13
|
+
].each do |meth|
|
|
14
|
+
it "should inherit #{meth} from Rack::Request" do
|
|
15
|
+
r.respond_to?(meth).should.equal(true)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe 'Racket::Request should not inherit methods that use merged GET and POST data' do
|
|
21
|
+
[:[], :[]=, :delete_param, :params, :update_param, :values_at].each do |meth|
|
|
22
|
+
it "should not inherit #{meth} from Rack::Request" do
|
|
23
|
+
r.respond_to?(meth).should.equal(false)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe 'Racket::Request should not inherit session methods' do
|
|
29
|
+
[:session, :session_options].each do |meth|
|
|
30
|
+
it "should not inherit #{meth} from Rack::Request" do
|
|
31
|
+
r.respond_to?(meth).should.equal(false)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'Racket::Request should redefine methods for handling GET/POST data' do
|
|
37
|
+
[:get, :get_params, :post, :post_params].each do |meth|
|
|
38
|
+
it "should define #{meth}" do
|
|
39
|
+
r.respond_to?(meth).should.equal(true)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
[:GET, :POST].each do |meth|
|
|
43
|
+
it "should not define #{meth}" do
|
|
44
|
+
r.respond_to?(meth).should.equal(false)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
data/spec/racket.rb
CHANGED
|
@@ -15,9 +15,15 @@ TEST_DEFAULT_APP_DIR = File.absolute_path(File.join(File.dirname(__FILE__), 'tes
|
|
|
15
15
|
TEST_CUSTOM_APP_DIR = File.absolute_path(File.join(File.dirname(__FILE__), 'test_custom_app'))
|
|
16
16
|
|
|
17
17
|
require 'racket'
|
|
18
|
+
|
|
19
|
+
# Make sure some files that are loaded dynamically get coverage as well.
|
|
20
|
+
require 'racket/helpers/file.rb'
|
|
21
|
+
|
|
18
22
|
require 'rack/test'
|
|
19
23
|
require 'bacon'
|
|
20
24
|
|
|
25
|
+
require_relative '_request.rb'
|
|
26
|
+
|
|
21
27
|
Dir.chdir(TEST_DEFAULT_APP_DIR) { require_relative '_default.rb' }
|
|
22
28
|
Dir.chdir(TEST_CUSTOM_APP_DIR) { require_relative '_custom.rb' }
|
|
23
29
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
class CustomSubController1 < Racket::Controller
|
|
2
2
|
|
|
3
|
+
helper :file
|
|
4
|
+
|
|
3
5
|
def index
|
|
4
6
|
"#{self.class}::#{__method__}"
|
|
5
7
|
end
|
|
@@ -11,9 +13,29 @@ class CustomSubController1 < Racket::Controller
|
|
|
11
13
|
def route_to_nonexisting
|
|
12
14
|
r(CustomInheritedController, :nonono, :with, :params)
|
|
13
15
|
end
|
|
14
|
-
|
|
16
|
+
|
|
15
17
|
def epic_fail
|
|
16
18
|
fail 'Epic fail!'
|
|
17
19
|
end
|
|
18
20
|
|
|
21
|
+
def send_existing_file_auto_mime
|
|
22
|
+
send_file('files/plain_text.txt')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def send_existing_file_custom_mime
|
|
26
|
+
send_file('files/plain_text.txt', mime_type: 'text/skv')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def send_existing_file_unnamed_attachment
|
|
30
|
+
send_file('files/plain_text.txt', download: true)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def send_existing_file_named_attachment
|
|
34
|
+
send_file('files/plain_text.txt', download: true, filename: 'bazinga!.txt')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def send_nonexisting_file
|
|
38
|
+
send_file('files/no_such_thing.jpg')
|
|
39
|
+
end
|
|
40
|
+
|
|
19
41
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is plain text.
|
|
@@ -12,4 +12,20 @@ class DefaultSubController2 < Racket::Controller
|
|
|
12
12
|
racket.params.to_json
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
def get_some_data
|
|
16
|
+
data = {}
|
|
17
|
+
[:data1, :data2, :data3].each do |d|
|
|
18
|
+
data[d] = request.get(d)
|
|
19
|
+
end
|
|
20
|
+
data.to_json
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def post_some_data
|
|
24
|
+
data = {}
|
|
25
|
+
[:data1, :data2, :data3].each do |d|
|
|
26
|
+
data[d] = request.post(d)
|
|
27
|
+
end
|
|
28
|
+
data.to_json
|
|
29
|
+
end
|
|
30
|
+
|
|
15
31
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: racket-mvc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lars Olsson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-08-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: http_router
|
|
@@ -98,16 +98,16 @@ dependencies:
|
|
|
98
98
|
name: rake
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- - "
|
|
101
|
+
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
103
|
+
version: '10'
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
|
-
- - "
|
|
108
|
+
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
110
|
+
version: '10'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: simplecov
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -126,14 +126,14 @@ dependencies:
|
|
|
126
126
|
name: yard
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- - "
|
|
129
|
+
- - "~>"
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
131
|
version: '0'
|
|
132
132
|
type: :development
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- - "
|
|
136
|
+
- - "~>"
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '0'
|
|
139
139
|
description: Racket is a small MVC framework built on top of rack.
|
|
@@ -149,6 +149,7 @@ files:
|
|
|
149
149
|
- lib/racket/application.rb
|
|
150
150
|
- lib/racket/controller.rb
|
|
151
151
|
- lib/racket/current.rb
|
|
152
|
+
- lib/racket/helpers/file.rb
|
|
152
153
|
- lib/racket/helpers/routing.rb
|
|
153
154
|
- lib/racket/helpers/view.rb
|
|
154
155
|
- lib/racket/request.rb
|
|
@@ -161,6 +162,7 @@ files:
|
|
|
161
162
|
- spec/_custom.rb
|
|
162
163
|
- spec/_default.rb
|
|
163
164
|
- spec/_invalid.rb
|
|
165
|
+
- spec/_request.rb
|
|
164
166
|
- spec/racket.rb
|
|
165
167
|
- spec/test_custom_app/controllers/sub1/custom_sub_controller_1.rb
|
|
166
168
|
- spec/test_custom_app/controllers/sub2/custom_sub_controller_2.rb
|
|
@@ -168,6 +170,7 @@ files:
|
|
|
168
170
|
- spec/test_custom_app/controllers/sub3/inherited/custom_inherited_controller.rb
|
|
169
171
|
- spec/test_custom_app/extra/blob.rb
|
|
170
172
|
- spec/test_custom_app/extra/blob/inner_blob.rb
|
|
173
|
+
- spec/test_custom_app/files/plain_text.txt
|
|
171
174
|
- spec/test_custom_app/files/secret.erb
|
|
172
175
|
- spec/test_custom_app/layouts/sub2/zebra.erb
|
|
173
176
|
- spec/test_custom_app/templates/sub2/template.erb
|