racket-mvc 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -7
- data/lib/racket/application.rb +1 -5
- data/lib/racket/router.rb +8 -10
- data/lib/racket/utils.rb +20 -0
- data/lib/racket/version.rb +6 -3
- data/spec/racket.rb +1 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 297c59402186821841ac8b3d9ec1585ebd19a9d4
|
4
|
+
data.tar.gz: acd9b707fa7aa9d7e249e818454fb2045367b5ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0a346641c4c8f09872051634660c1270edaa0c6ca34ee4f9fd13e69736d24c58bb976b45df94cbc4208443204ad0198ab0ef7d1cfbb57b47d9c27995ac81a01
|
7
|
+
data.tar.gz: 0cfa26fb63e2750dd4b3ab3bb1472fefbbc589f24d29fcacfbeb13ea55b787cd46f0b249b57b5f0fa5706786dc6b72cfd67da64e2feff86a40eb11ba18e1728c
|
data/README.md
CHANGED
@@ -20,18 +20,27 @@ Yes. Writing Rack frameworks is easy! And since I am able to decide exactly what
|
|
20
20
|
need to adopt to a large ecosystem of concepts I do not like.
|
21
21
|
|
22
22
|
## So, is it any good?
|
23
|
-
|
24
|
-
|
23
|
+
Let us just say it is good _enough_ for my needs at the moment. I plan to add more features/make stuff faster
|
24
|
+
whenever I am finished porting most of my old apps from Ramaze.
|
25
25
|
|
26
26
|
## Where are the tests?
|
27
|
-
Have a look in the `spec` directory. The code base have tests covering 100 per cent of the code and I am planning on keeping it that way. At the moment the code is tested
|
27
|
+
Have a look in the `spec` directory. The code base have tests covering 100 per cent of the code and I am planning on keeping it that way. At the moment the code is tested on the following platforms (using [Travis CI](https://travis-ci.org/)):
|
28
28
|
|
29
|
-
|
29
|
+
- ruby 1.9.3
|
30
|
+
- ruby 2.0
|
31
|
+
- ruby 2.1.6
|
32
|
+
- ruby 2.2.2
|
33
|
+
- jruby (latest version, 1.9 mode only)
|
34
|
+
- rbx-2 (latest version)
|
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.
|
37
|
+
|
38
|
+
If you are not interested in running the tests yourself you could have a look at the test status at [Travis CI](https://travis-ci.org/lasso/racket) and the code coverage at [Codecov](https://codecov.io/github/lasso/racket). Their stats get updated on every commit.
|
30
39
|
|
31
40
|
## Alright, I want to try using this stuff. Where are the docs?
|
32
|
-
|
33
|
-
|
34
|
-
|
41
|
+
At the moment there is not much documentation available, but I have started working on the [wiki](https://github.com/lasso/racket/wiki).
|
42
|
+
|
43
|
+
The code itself is documented using [Yard](http://yardoc.org/). The docs are not generated automatically, you need to run `rake doc` in the root directory to generate them. After running the rake task the documentation will be available in the `doc` directory.
|
35
44
|
|
36
45
|
## Why is the code licenced under the GNU Affero General Public License? I want a more liberal licence!
|
37
46
|
Because I think it is a Good Thing™ to share code. The
|
data/lib/racket/application.rb
CHANGED
@@ -38,11 +38,7 @@ module Racket
|
|
38
38
|
instance.options[:middleware].each do |middleware|
|
39
39
|
klass, opts = middleware
|
40
40
|
instance.inform_dev("Loading middleware #{klass} with options #{opts}.")
|
41
|
-
|
42
|
-
use klass, opts
|
43
|
-
else
|
44
|
-
use klass
|
45
|
-
end
|
41
|
+
use *middleware
|
46
42
|
end
|
47
43
|
run lambda { |env|
|
48
44
|
static_result = instance.serve_static_file(env)
|
data/lib/racket/router.rb
CHANGED
@@ -41,8 +41,7 @@ module Racket
|
|
41
41
|
actions.merge(current.instance_methods(false))
|
42
42
|
current = current.superclass
|
43
43
|
end
|
44
|
-
@actions_by_controller[controller] = actions.to_a
|
45
|
-
nil
|
44
|
+
(@actions_by_controller[controller] = actions.to_a) && nil
|
46
45
|
end
|
47
46
|
|
48
47
|
# Returns a route to the specified controller/action/parameter combination.
|
@@ -71,8 +70,7 @@ module Racket
|
|
71
70
|
Application.inform_dev("Mapping #{controller} to #{controller_base_path}.")
|
72
71
|
@router.add("#{path}(/*params)").to(controller)
|
73
72
|
@routes_by_controller[controller] = controller_base_path
|
74
|
-
cache_actions(controller)
|
75
|
-
nil
|
73
|
+
cache_actions(controller) && nil
|
76
74
|
end
|
77
75
|
|
78
76
|
# @todo: Allow the user to set custom handlers for different errors
|
@@ -105,12 +103,13 @@ module Racket
|
|
105
103
|
# Check if action is available on target
|
106
104
|
return render_error(404) unless @actions_by_controller[target_klass].include?(action)
|
107
105
|
|
108
|
-
#
|
106
|
+
# Rewrite PATH_INFO to reflect that we split out the parameters
|
107
|
+
env['PATH_INFO'] = env['PATH_INFO']
|
108
|
+
.split('/')[0...-params.count]
|
109
|
+
.join('/') unless params.empty?
|
110
|
+
|
111
|
+
# Initialize and render target
|
109
112
|
target = target_klass.new
|
110
|
-
# @fixme: File.dirname should not be used on urls!
|
111
|
-
1.upto(params.count) do
|
112
|
-
env['PATH_INFO'] = File.dirname(env['PATH_INFO'])
|
113
|
-
end
|
114
113
|
target.extend(Current.init(env, action, params))
|
115
114
|
target.render(action)
|
116
115
|
else
|
@@ -121,6 +120,5 @@ module Racket
|
|
121
120
|
render_error(500, err)
|
122
121
|
end
|
123
122
|
end
|
124
|
-
|
125
123
|
end
|
126
124
|
end
|
data/lib/racket/utils.rb
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
=begin
|
2
|
+
Racket - The noisy Rack MVC framework
|
3
|
+
Copyright (C) 2015 Lars Olsson <lasso@lassoweb.se>
|
4
|
+
|
5
|
+
This file is part of Racket.
|
6
|
+
|
7
|
+
Racket is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU Affero General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
Racket is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU Affero General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU Affero General Public License
|
18
|
+
along with Racket. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
=end
|
20
|
+
|
1
21
|
module Racket
|
2
22
|
# Collects utilities needed by different objects in Racket.
|
3
23
|
class Utils
|
data/lib/racket/version.rb
CHANGED
@@ -25,15 +25,18 @@ module Racket
|
|
25
25
|
# Major version
|
26
26
|
MAJOR = 0
|
27
27
|
# Minor version
|
28
|
-
MINOR =
|
28
|
+
MINOR = 1
|
29
29
|
# Teeny version
|
30
|
-
TEENY =
|
30
|
+
TEENY = 0
|
31
|
+
# Prerelease ?
|
32
|
+
PRERELEASE = false
|
31
33
|
|
32
34
|
# Returns the current version of Racket as a string.
|
33
35
|
#
|
34
36
|
# @return [String]
|
35
37
|
def current
|
36
|
-
[MAJOR, MINOR, TEENY]
|
38
|
+
current = [MAJOR, MINOR, TEENY]
|
39
|
+
((current.push('pre') if PRERELEASE) || current).join('.')
|
37
40
|
end
|
38
41
|
|
39
42
|
module_function :current
|
data/spec/racket.rb
CHANGED
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.0
|
4
|
+
version: 0.1.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-07-
|
11
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http_router
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description: Racket is a small MVC framework built
|
139
|
+
description: Racket is a small MVC framework built on top of rack.
|
140
140
|
email: lasso@lassoweb.se
|
141
141
|
executables: []
|
142
142
|
extensions: []
|
@@ -186,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
186
|
requirements:
|
187
187
|
- - ">="
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version:
|
189
|
+
version: 1.9.3
|
190
190
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - ">="
|