spire 0.4.9 → 0.4.10
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/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:
|