spire 0.4.9 → 0.4.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -1
- data/Gemfile.lock +0 -5
- data/VERSION +1 -1
- data/lib/spire/class/MainController.rb +5 -3
- data/lib/spire/map.rb +37 -0
- data/lib/spire/public.rb +13 -20
- data/lib/spire/{http.rb → response.rb} +1 -1
- data/lib/spire/router.rb +25 -43
- data/lib/spire/templates/error/error.haml +2 -24
- data/lib/spire.rb +2 -1
- data/spire.gemspec +4 -6
- metadata +5 -20
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -11,10 +11,6 @@ GEM
|
|
11
11
|
multi_json (1.3.6)
|
12
12
|
rack (1.3.5)
|
13
13
|
rake (0.9.2.2)
|
14
|
-
simplecov (0.6.4)
|
15
|
-
multi_json (~> 1.0)
|
16
|
-
simplecov-html (~> 0.5.3)
|
17
|
-
simplecov-html (0.5.3)
|
18
14
|
|
19
15
|
PLATFORMS
|
20
16
|
ruby
|
@@ -25,4 +21,3 @@ DEPENDENCIES
|
|
25
21
|
haml (>= 3.1.0)
|
26
22
|
jeweler (>= 1.6.4)
|
27
23
|
rack (>= 1.3.0)
|
28
|
-
simplecov (>= 0.6.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.10
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'spire/
|
1
|
+
require 'spire/response'
|
2
2
|
require 'spire/resource/buffer'
|
3
3
|
|
4
4
|
module Spire
|
@@ -6,8 +6,9 @@ module Spire
|
|
6
6
|
class MainController
|
7
7
|
attr_accessor :buffer
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(request)
|
10
10
|
@buffer = Buffer.new
|
11
|
+
@request = request
|
11
12
|
end
|
12
13
|
|
13
14
|
def get_buffer
|
@@ -25,7 +26,8 @@ module Spire
|
|
25
26
|
end
|
26
27
|
|
27
28
|
if opts[:view]
|
28
|
-
file_path = File.
|
29
|
+
file_path = File.expand_path(__FILE__)
|
30
|
+
file_path["lib/spire/class/MainController.rb"] = "app/views/#{opts[:view]}"
|
29
31
|
return 404 unless File.exists?(file_path)
|
30
32
|
contents = IO.read(file_path)
|
31
33
|
extension = File.extname(file_path)
|
data/lib/spire/map.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Spire
|
2
|
+
class Map
|
3
|
+
attr_accessor :auto
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@maps = Hash.new({})
|
7
|
+
@auto = false
|
8
|
+
end
|
9
|
+
|
10
|
+
def route(opts={})
|
11
|
+
@maps[opts[:url]] = opts[:to]
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(url)
|
15
|
+
return @maps[url]
|
16
|
+
end
|
17
|
+
|
18
|
+
def should_use_auto(url)
|
19
|
+
if @maps[url] == {} && @auto
|
20
|
+
return true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def exists?(url)
|
25
|
+
if @maps[url] == {}
|
26
|
+
return false
|
27
|
+
else
|
28
|
+
return true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def disect(request)
|
33
|
+
return request.split("/")
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/spire/public.rb
CHANGED
@@ -5,36 +5,29 @@ module Spire
|
|
5
5
|
def initialize(opts={:render=>true})
|
6
6
|
@opts = opts
|
7
7
|
end
|
8
|
-
|
9
|
-
def extension_check
|
10
|
-
file_extension = File.extname(@opts[:file])
|
11
|
-
Mime.return_mimes.each do |ext, type|
|
12
|
-
if file_extension == ext
|
13
|
-
@content_type = type
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
if @opts[:render]
|
18
|
-
self.create_response
|
19
|
-
else
|
20
|
-
return [false, @content_type]
|
21
|
-
end
|
22
|
-
end
|
23
8
|
|
24
9
|
def self.return_file(file)
|
25
|
-
|
26
|
-
file =
|
27
|
-
|
28
|
-
if file == 404
|
29
|
-
return Error.return_error :status => 404
|
10
|
+
file_object = Public.new :file => file, :render => true
|
11
|
+
file = file_object.create_response
|
12
|
+
|
13
|
+
if file == 404
|
14
|
+
return Error.return_error :status => 404
|
30
15
|
else
|
31
16
|
return Response.new(file[:file], file[:content_type], 200)
|
32
17
|
end
|
33
18
|
end
|
34
19
|
|
35
20
|
def create_response
|
21
|
+
file_extension = File.extname(@opts[:file])
|
22
|
+
Mime.return_mimes ? @content_type = Mime.return_mimes[file_extension] : false
|
23
|
+
|
24
|
+
if !@opts[:render]
|
25
|
+
return [false, @content_type]
|
26
|
+
end
|
27
|
+
|
36
28
|
path = File.expand_path(__FILE__)
|
37
29
|
path["lib/spire/public.rb"] = "public/#{@opts[:file]}"
|
30
|
+
|
38
31
|
if File.exists?(path)
|
39
32
|
file = IO.read(path)
|
40
33
|
@return = {}
|
@@ -2,7 +2,7 @@ module Spire
|
|
2
2
|
class Response
|
3
3
|
attr_accessor :status_code, :headers, :content
|
4
4
|
|
5
|
-
def initialize(content='', content_type='text/html; charset=utf8', status=200)
|
5
|
+
def initialize(content='', content_type='text/html; charset=utf8', status=200, manual_headers=nil)
|
6
6
|
@content = content
|
7
7
|
@headers = {'Content-Type' => content_type}
|
8
8
|
@status_code = status
|
data/lib/spire/router.rb
CHANGED
@@ -1,54 +1,37 @@
|
|
1
1
|
module Spire
|
2
2
|
class Router
|
3
|
-
def initialize(
|
4
|
-
|
5
|
-
@routes = routes
|
6
|
-
@app = {}
|
3
|
+
def initialize(map)
|
4
|
+
@map = map
|
7
5
|
end
|
8
6
|
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
end
|
7
|
+
def route(env)
|
8
|
+
request = Rack::Request.new(env)
|
9
|
+
request_path = env["REQUEST_PATH"]
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
if @request["controller"] == "favicon.ico"
|
18
|
-
favicon = Public.return_file("favicon.ico")
|
19
|
-
return favicon
|
11
|
+
if request_path == "/favicon.ico"
|
12
|
+
return Public.return_file "favicon.ico"
|
20
13
|
end
|
21
|
-
|
22
|
-
if
|
23
|
-
|
24
|
-
@app["controller"] = route[0].capitalize
|
25
|
-
@app["action"] = route[1]
|
26
|
-
else
|
27
|
-
@routes.each do |key, value|
|
28
|
-
keys = key.split("/")
|
29
|
-
values = value.split("#")
|
30
|
-
if @request["controller"] == keys[1] && @request["action"] == keys[3]
|
31
|
-
@app["controller"] = values[0].capitalize
|
32
|
-
@app["action"] = values[1]
|
33
|
-
elsif @request["controller"] == keys[1]
|
34
|
-
@app["controller"] = values[0].capitalize
|
35
|
-
@app["action"] = values[1]
|
36
|
-
end
|
37
|
-
end
|
14
|
+
|
15
|
+
if !@map.exists? request_path
|
16
|
+
return Error.return_error :message => "No route was not found!", :status => 404
|
38
17
|
end
|
39
|
-
|
40
|
-
if
|
41
|
-
|
18
|
+
|
19
|
+
if @map.should_use_auto(request_path)
|
20
|
+
params = @map.disect(request_path)
|
21
|
+
return self.run({:controller => params[1], :action => params[2]})
|
42
22
|
end
|
43
|
-
|
44
|
-
return self.run
|
23
|
+
|
24
|
+
return self.run(@map.get(request_path), request)
|
45
25
|
end
|
46
26
|
|
47
|
-
def run
|
48
|
-
|
49
|
-
|
27
|
+
def run(maps_to, request)
|
28
|
+
path = File.expand_path(__FILE__)
|
29
|
+
path["lib/spire/router.rb"] = "app/controllers"
|
30
|
+
|
31
|
+
require "#{path}/#{maps_to[:controller].capitalize}Controller.rb"
|
32
|
+
@class = Kernel.const_get(maps_to[:controller].capitalize).new(request)
|
50
33
|
|
51
|
-
result = @class.method(
|
34
|
+
result = @class.method(maps_to[:action]).call
|
52
35
|
buffer = @class.get_buffer
|
53
36
|
|
54
37
|
if !buffer && !result
|
@@ -63,7 +46,7 @@ module Spire
|
|
63
46
|
end
|
64
47
|
|
65
48
|
if @class.instance_variable_get(:@content_type)
|
66
|
-
content_type = @class.instance_variable_get(
|
49
|
+
content_type = @class.instance_variable_get(:@content_type)
|
67
50
|
end
|
68
51
|
|
69
52
|
if result
|
@@ -74,8 +57,7 @@ module Spire
|
|
74
57
|
end
|
75
58
|
|
76
59
|
def call(env)
|
77
|
-
self.
|
78
|
-
response = self.route
|
60
|
+
response = self.route(env)
|
79
61
|
|
80
62
|
puts response
|
81
63
|
if response
|
@@ -5,7 +5,7 @@
|
|
5
5
|
body {
|
6
6
|
font-family: 'Helvetica Neue';
|
7
7
|
padding-left: 30px;
|
8
|
-
background: #
|
8
|
+
background: #fff;
|
9
9
|
padding: 0;
|
10
10
|
margin: 0;
|
11
11
|
margin-bottom: 100px;
|
@@ -21,29 +21,7 @@
|
|
21
21
|
padding-left: 5%;
|
22
22
|
padding-right: 5%;
|
23
23
|
}
|
24
|
-
|
25
|
-
font-size: 1.2em;
|
26
|
-
width: 80%;
|
27
|
-
margin-left: auto;
|
28
|
-
margin-right: auto;
|
29
|
-
border: 2px solid #D64C49;
|
30
|
-
padding-top: 30px;
|
31
|
-
padding-bottom: 30px;
|
32
|
-
}
|
33
|
-
#footer {
|
34
|
-
position: fixed;
|
35
|
-
bottom: 0px;
|
36
|
-
height: 45px;
|
37
|
-
width: 100%;
|
38
|
-
background-color: #E0FFD3;
|
39
|
-
border-top: 2px solid #484939;
|
40
|
-
}
|
24
|
+
|
41
25
|
%body
|
42
26
|
%h1= @error_code
|
43
27
|
%p= @error_message
|
44
|
-
- if @extended_message
|
45
|
-
%p#trace= @extended_message
|
46
|
-
#footer
|
47
|
-
%a{:href => "http://spire.heroku.com"} Powered by Spire
|
48
|
-
#cocoon
|
49
|
-
%a{:href => "http://wearecocoon.com"} by Cocoon
|
data/lib/spire.rb
CHANGED
data/spire.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "spire"
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Scott Nicol"]
|
12
|
-
s.date = "2012-08-
|
12
|
+
s.date = "2012-08-29"
|
13
13
|
s.description = "Light rack-based framework with controllers, HAML/ERB views, router & error handler"
|
14
14
|
s.email = "scott@scottnicol.co.uk"
|
15
15
|
s.executables = ["spire"]
|
@@ -26,10 +26,11 @@ Gem::Specification.new do |s|
|
|
26
26
|
"lib/spire.rb",
|
27
27
|
"lib/spire/class/MainController.rb",
|
28
28
|
"lib/spire/error.rb",
|
29
|
-
"lib/spire/
|
29
|
+
"lib/spire/map.rb",
|
30
30
|
"lib/spire/public.rb",
|
31
31
|
"lib/spire/resource/buffer.rb",
|
32
32
|
"lib/spire/resource/mime.rb",
|
33
|
+
"lib/spire/response.rb",
|
33
34
|
"lib/spire/router.rb",
|
34
35
|
"lib/spire/templates/error/error.haml",
|
35
36
|
"spire.gemspec"
|
@@ -49,14 +50,12 @@ Gem::Specification.new do |s|
|
|
49
50
|
s.add_runtime_dependency(%q<erubis>, [">= 2.7.0"])
|
50
51
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
51
52
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
|
52
|
-
s.add_development_dependency(%q<simplecov>, [">= 0.6.0"])
|
53
53
|
else
|
54
54
|
s.add_dependency(%q<rack>, [">= 1.3.0"])
|
55
55
|
s.add_dependency(%q<haml>, [">= 3.1.0"])
|
56
56
|
s.add_dependency(%q<erubis>, [">= 2.7.0"])
|
57
57
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
58
58
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
59
|
-
s.add_dependency(%q<simplecov>, [">= 0.6.0"])
|
60
59
|
end
|
61
60
|
else
|
62
61
|
s.add_dependency(%q<rack>, [">= 1.3.0"])
|
@@ -64,7 +63,6 @@ Gem::Specification.new do |s|
|
|
64
63
|
s.add_dependency(%q<erubis>, [">= 2.7.0"])
|
65
64
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
66
65
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
67
|
-
s.add_dependency(%q<simplecov>, [">= 0.6.0"])
|
68
66
|
end
|
69
67
|
end
|
70
68
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -91,22 +91,6 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 1.6.4
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: simplecov
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: 0.6.0
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.6.0
|
110
94
|
description: Light rack-based framework with controllers, HAML/ERB views, router &
|
111
95
|
error handler
|
112
96
|
email: scott@scottnicol.co.uk
|
@@ -125,10 +109,11 @@ files:
|
|
125
109
|
- lib/spire.rb
|
126
110
|
- lib/spire/class/MainController.rb
|
127
111
|
- lib/spire/error.rb
|
128
|
-
- lib/spire/
|
112
|
+
- lib/spire/map.rb
|
129
113
|
- lib/spire/public.rb
|
130
114
|
- lib/spire/resource/buffer.rb
|
131
115
|
- lib/spire/resource/mime.rb
|
116
|
+
- lib/spire/response.rb
|
132
117
|
- lib/spire/router.rb
|
133
118
|
- lib/spire/templates/error/error.haml
|
134
119
|
- spire.gemspec
|
@@ -147,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
132
|
version: '0'
|
148
133
|
segments:
|
149
134
|
- 0
|
150
|
-
hash:
|
135
|
+
hash: 3764740053052310701
|
151
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
137
|
none: false
|
153
138
|
requirements:
|