spire 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -4
- data/Gemfile.lock +9 -6
- data/Rakefile +0 -10
- data/VERSION +1 -1
- data/lib/spire/class/MainController.rb +32 -45
- data/lib/spire/error.rb +1 -1
- data/lib/spire/http.rb +0 -6
- data/lib/spire/public.rb +12 -3
- data/lib/spire/resource/buffer.rb +13 -0
- data/lib/spire/resource/mime.rb +2 -2
- data/lib/spire/router.rb +15 -27
- data/spire.gemspec +13 -15
- metadata +47 -27
data/Gemfile
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
+
source 'https://rubygems.org'
|
1
2
|
gem "rack", ">= 1.3.0"
|
2
|
-
gem "rack-rewrite", ">= 1.2.1"
|
3
3
|
gem "haml", ">= 3.1.0"
|
4
4
|
gem "erubis", ">= 2.7.0"
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
8
|
group :development do
|
9
|
-
gem "bundler", "
|
10
|
-
gem "jeweler", "
|
11
|
-
gem "
|
9
|
+
gem "bundler", ">= 1.0.0"
|
10
|
+
gem "jeweler", ">= 1.6.4"
|
11
|
+
gem "simplecov", ">= 0.6.0"
|
12
12
|
end
|
13
13
|
|
data/Gemfile.lock
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
GEM
|
2
|
+
remote: https://rubygems.org/
|
2
3
|
specs:
|
3
4
|
erubis (2.7.0)
|
4
5
|
git (1.2.5)
|
@@ -7,19 +8,21 @@ GEM
|
|
7
8
|
bundler (~> 1.0)
|
8
9
|
git (>= 1.2.5)
|
9
10
|
rake
|
11
|
+
multi_json (1.3.6)
|
10
12
|
rack (1.3.5)
|
11
|
-
rack-rewrite (1.2.1)
|
12
13
|
rake (0.9.2.2)
|
13
|
-
|
14
|
+
simplecov (0.6.4)
|
15
|
+
multi_json (~> 1.0)
|
16
|
+
simplecov-html (~> 0.5.3)
|
17
|
+
simplecov-html (0.5.3)
|
14
18
|
|
15
19
|
PLATFORMS
|
16
20
|
ruby
|
17
21
|
|
18
22
|
DEPENDENCIES
|
19
|
-
bundler (
|
23
|
+
bundler (>= 1.0.0)
|
20
24
|
erubis (>= 2.7.0)
|
21
25
|
haml (>= 3.1.0)
|
22
|
-
jeweler (
|
26
|
+
jeweler (>= 1.6.4)
|
23
27
|
rack (>= 1.3.0)
|
24
|
-
|
25
|
-
rcov
|
28
|
+
simplecov (>= 0.6.0)
|
data/Rakefile
CHANGED
@@ -32,16 +32,6 @@ Rake::TestTask.new(:test) do |test|
|
|
32
32
|
test.verbose = true
|
33
33
|
end
|
34
34
|
|
35
|
-
require 'rcov/rcovtask'
|
36
|
-
Rcov::RcovTask.new do |test|
|
37
|
-
test.libs << 'test'
|
38
|
-
test.pattern = 'test/**/test_*.rb'
|
39
|
-
test.verbose = true
|
40
|
-
test.rcov_opts << '--exclude "gems/*"'
|
41
|
-
end
|
42
|
-
|
43
|
-
task :default => :test
|
44
|
-
|
45
35
|
require 'rake/rdoctask'
|
46
36
|
Rake::RDocTask.new do |rdoc|
|
47
37
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.7
|
@@ -1,63 +1,50 @@
|
|
1
1
|
require 'spire/http'
|
2
|
+
require 'spire/resource/buffer'
|
2
3
|
|
3
4
|
module Spire
|
5
|
+
|
4
6
|
class MainController
|
7
|
+
attr_accessor :buffer
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@buffer = Buffer.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_buffer
|
14
|
+
@buffer.data
|
15
|
+
end
|
5
16
|
|
6
17
|
def render(opts={})
|
7
|
-
|
18
|
+
instance_vars = {}
|
8
19
|
instance_variables.each do |var|
|
9
|
-
|
20
|
+
instance_vars[var] = instance_variable_get(var)
|
10
21
|
end
|
11
22
|
|
12
23
|
if opts[:text]
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
if opts[:file]
|
17
|
-
contents = Public.new :file => "test.html", :render => true
|
18
|
-
file = contents.extension_check
|
19
|
-
return file
|
24
|
+
@buffer.append(opts[:text])
|
20
25
|
end
|
21
|
-
|
22
|
-
if opts[:view].is_a? Array
|
23
|
-
@storage = ""
|
24
|
-
opts[:view].each do |file|
|
25
|
-
file_path = File.join($base_path, 'views', file)
|
26
|
-
return 404 unless File.exists?(file_path)
|
27
|
-
contents = IO.read(file_path)
|
28
|
-
extension = File.extname(file_path)
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
27
|
+
if opts[:view]
|
28
|
+
file_path = File.join($base_path, 'views', opts[:view])
|
29
|
+
return 404 unless File.exists?(file_path)
|
30
|
+
contents = IO.read(file_path)
|
31
|
+
extension = File.extname(file_path)
|
32
|
+
|
33
|
+
case extension
|
34
|
+
when '.haml'
|
35
|
+
require 'haml'
|
36
|
+
insert = Haml::Engine.new(contents).render(Object.new, instance_vars)
|
37
|
+
when '.rhtml'
|
38
|
+
require 'erubis'
|
39
|
+
eruby = Erubis::Eruby.new(contents)
|
40
|
+
insert = eruby.result(instance_vars)
|
41
|
+
else
|
42
|
+
return false
|
41
43
|
end
|
42
|
-
|
44
|
+
@buffer.append(insert)
|
43
45
|
end
|
44
|
-
|
45
|
-
file_path = File.join($base_path, 'views', opts[:view])
|
46
|
-
return 404 unless File.exists?(file_path)
|
47
|
-
contents = IO.read(file_path)
|
48
|
-
extension = File.extname(file_path)
|
49
46
|
|
50
|
-
|
51
|
-
when '.haml'
|
52
|
-
require 'haml'
|
53
|
-
Haml::Engine.new(contents).render(Object.new)
|
54
|
-
when '.rhtml'
|
55
|
-
require 'erubis'
|
56
|
-
eruby = Erubis::Eruby.new(contents)
|
57
|
-
eruby.result(data)
|
58
|
-
else
|
59
|
-
contents
|
60
|
-
end
|
47
|
+
return nil
|
61
48
|
end
|
62
49
|
|
63
50
|
end
|
data/lib/spire/error.rb
CHANGED
data/lib/spire/http.rb
CHANGED
@@ -7,12 +7,6 @@ module Spire
|
|
7
7
|
@headers = {'Content-Type' => content_type}
|
8
8
|
@status_code = status
|
9
9
|
end
|
10
|
-
|
11
|
-
def manual_response(content, headers, status)
|
12
|
-
@content = content
|
13
|
-
@headers = headers
|
14
|
-
@status_code = status
|
15
|
-
end
|
16
10
|
|
17
11
|
def to_rack
|
18
12
|
[status_code, headers, [content]]
|
data/lib/spire/public.rb
CHANGED
@@ -4,13 +4,11 @@ module Spire
|
|
4
4
|
class Public
|
5
5
|
def initialize(opts={:render=>true})
|
6
6
|
@opts = opts
|
7
|
-
mime = Mime.new
|
8
|
-
@mime_types = mime.return_mimes
|
9
7
|
end
|
10
8
|
|
11
9
|
def extension_check
|
12
10
|
file_extension = File.extname(@opts[:file])
|
13
|
-
|
11
|
+
Mime.return_mimes.each do |ext, type|
|
14
12
|
if file_extension == ext
|
15
13
|
@content_type = type
|
16
14
|
end
|
@@ -22,6 +20,17 @@ module Spire
|
|
22
20
|
return [false, @content_type]
|
23
21
|
end
|
24
22
|
end
|
23
|
+
|
24
|
+
def self.return_file(file)
|
25
|
+
result = Public.new :file => file, :render => true
|
26
|
+
file = result.extension_check
|
27
|
+
puts file
|
28
|
+
if file == 404
|
29
|
+
return Error.new :status => 404, :message => "404 // File not found"
|
30
|
+
else
|
31
|
+
return Response.new(file[:file], file[:content_type], 200)
|
32
|
+
end
|
33
|
+
end
|
25
34
|
|
26
35
|
def create_response
|
27
36
|
path = File.expand_path(__FILE__)
|
data/lib/spire/resource/mime.rb
CHANGED
data/lib/spire/router.rb
CHANGED
@@ -15,8 +15,8 @@ module Spire
|
|
15
15
|
@app["controller"] = nil
|
16
16
|
|
17
17
|
if @request["controller"] == "favicon.ico"
|
18
|
-
|
19
|
-
|
18
|
+
favicon = Public.return_file("favicon.ico")
|
19
|
+
return favicon
|
20
20
|
end
|
21
21
|
|
22
22
|
if @request["controller"] == nil
|
@@ -37,43 +37,27 @@ module Spire
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
return Error.new :message => "
|
40
|
+
if !@app["controller"]
|
41
|
+
return Error.new :message => "Route not found in system/routes.rb", :status => 404
|
42
42
|
end
|
43
43
|
|
44
44
|
return self.run
|
45
45
|
end
|
46
46
|
|
47
|
-
def return_file(file)
|
48
|
-
result = Public.new :file => file, :render => true
|
49
|
-
file = result.extension_check
|
50
|
-
|
51
|
-
if file == 404
|
52
|
-
return Error.new :status => 404, :message => "404 // File not found"
|
53
|
-
else
|
54
|
-
return Response.new(file[:file], file[:content_type], 200)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
47
|
def run
|
59
48
|
require "#{$base_path}/controllers/#{@app["controller"]}Controller"
|
60
49
|
@class = Kernel.const_get(@app["controller"]).new()
|
61
50
|
|
62
51
|
result = @class.method(@app["action"]).call
|
52
|
+
buffer = @class.get_buffer
|
63
53
|
|
64
|
-
if result
|
65
|
-
|
66
|
-
return Response.new(result[:file], result[:content_type], 200)
|
67
|
-
end
|
54
|
+
if !buffer || !result
|
55
|
+
return Error.new :message => "No method/Response from method. See #{@app["controller"]}##{@app["action"]} and check for a response", :status => 404
|
68
56
|
end
|
69
|
-
|
57
|
+
|
70
58
|
content_type = "text/html;"
|
71
59
|
status = 200
|
72
|
-
|
73
|
-
if result == 404 or result == nil
|
74
|
-
return Error.new :message => "404 // No method/Response from method. See #{@app["controller"]}##{@app["action"]} and check for a response", :status => 404
|
75
|
-
end
|
76
|
-
|
60
|
+
|
77
61
|
if @class.instance_variable_get(:@status)
|
78
62
|
status = @class.instance_variable_get(:@status)
|
79
63
|
end
|
@@ -81,8 +65,12 @@ module Spire
|
|
81
65
|
if @class.instance_variable_get(:@content_type)
|
82
66
|
content_type = @class.instance_variable_get(:content_type)
|
83
67
|
end
|
84
|
-
|
85
|
-
|
68
|
+
|
69
|
+
if result
|
70
|
+
buffer = buffer + result
|
71
|
+
end
|
72
|
+
|
73
|
+
return Response.new(buffer, content_type, status)
|
86
74
|
end
|
87
75
|
|
88
76
|
def call(env)
|
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.7"
|
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 = "
|
12
|
+
s.date = "2012-08-08"
|
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"]
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/spire/error.rb",
|
29
29
|
"lib/spire/http.rb",
|
30
30
|
"lib/spire/public.rb",
|
31
|
+
"lib/spire/resource/buffer.rb",
|
31
32
|
"lib/spire/resource/mime.rb",
|
32
33
|
"lib/spire/router.rb",
|
33
34
|
"spire.gemspec"
|
@@ -35,7 +36,7 @@ Gem::Specification.new do |s|
|
|
35
36
|
s.homepage = "http://github.com/snicol/spire"
|
36
37
|
s.licenses = ["MIT"]
|
37
38
|
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = "1.8.
|
39
|
+
s.rubygems_version = "1.8.24"
|
39
40
|
s.summary = "A light controller-only rack framework with a dash of views"
|
40
41
|
|
41
42
|
if s.respond_to? :specification_version then
|
@@ -43,29 +44,26 @@ Gem::Specification.new do |s|
|
|
43
44
|
|
44
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
46
|
s.add_runtime_dependency(%q<rack>, [">= 1.3.0"])
|
46
|
-
s.add_runtime_dependency(%q<rack-rewrite>, [">= 1.2.1"])
|
47
47
|
s.add_runtime_dependency(%q<haml>, [">= 3.1.0"])
|
48
48
|
s.add_runtime_dependency(%q<erubis>, [">= 2.7.0"])
|
49
|
-
s.add_development_dependency(%q<bundler>, ["
|
50
|
-
s.add_development_dependency(%q<jeweler>, ["
|
51
|
-
s.add_development_dependency(%q<
|
49
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
50
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
|
51
|
+
s.add_development_dependency(%q<simplecov>, [">= 0.6.0"])
|
52
52
|
else
|
53
53
|
s.add_dependency(%q<rack>, [">= 1.3.0"])
|
54
|
-
s.add_dependency(%q<rack-rewrite>, [">= 1.2.1"])
|
55
54
|
s.add_dependency(%q<haml>, [">= 3.1.0"])
|
56
55
|
s.add_dependency(%q<erubis>, [">= 2.7.0"])
|
57
|
-
s.add_dependency(%q<bundler>, ["
|
58
|
-
s.add_dependency(%q<jeweler>, ["
|
59
|
-
s.add_dependency(%q<
|
56
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
57
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
58
|
+
s.add_dependency(%q<simplecov>, [">= 0.6.0"])
|
60
59
|
end
|
61
60
|
else
|
62
61
|
s.add_dependency(%q<rack>, [">= 1.3.0"])
|
63
|
-
s.add_dependency(%q<rack-rewrite>, [">= 1.2.1"])
|
64
62
|
s.add_dependency(%q<haml>, [">= 3.1.0"])
|
65
63
|
s.add_dependency(%q<erubis>, [">= 2.7.0"])
|
66
|
-
s.add_dependency(%q<bundler>, ["
|
67
|
-
s.add_dependency(%q<jeweler>, ["
|
68
|
-
s.add_dependency(%q<
|
64
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
65
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
66
|
+
s.add_dependency(%q<simplecov>, [">= 0.6.0"])
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
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.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-08-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,15 @@ dependencies:
|
|
21
21
|
version: 1.3.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: rack-rewrite
|
27
|
-
requirement: &70280842012880 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
none: false
|
29
26
|
requirements:
|
30
27
|
- - ! '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70280842012880
|
29
|
+
version: 1.3.0
|
36
30
|
- !ruby/object:Gem::Dependency
|
37
31
|
name: haml
|
38
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
39
33
|
none: false
|
40
34
|
requirements:
|
41
35
|
- - ! '>='
|
@@ -43,10 +37,15 @@ dependencies:
|
|
43
37
|
version: 3.1.0
|
44
38
|
type: :runtime
|
45
39
|
prerelease: false
|
46
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.1.0
|
47
46
|
- !ruby/object:Gem::Dependency
|
48
47
|
name: erubis
|
49
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
50
49
|
none: false
|
51
50
|
requirements:
|
52
51
|
- - ! '>='
|
@@ -54,40 +53,60 @@ dependencies:
|
|
54
53
|
version: 2.7.0
|
55
54
|
type: :runtime
|
56
55
|
prerelease: false
|
57
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.7.0
|
58
62
|
- !ruby/object:Gem::Dependency
|
59
63
|
name: bundler
|
60
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
61
65
|
none: false
|
62
66
|
requirements:
|
63
|
-
- -
|
67
|
+
- - ! '>='
|
64
68
|
- !ruby/object:Gem::Version
|
65
69
|
version: 1.0.0
|
66
70
|
type: :development
|
67
71
|
prerelease: false
|
68
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: jeweler
|
71
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
72
81
|
none: false
|
73
82
|
requirements:
|
74
|
-
- -
|
83
|
+
- - ! '>='
|
75
84
|
- !ruby/object:Gem::Version
|
76
85
|
version: 1.6.4
|
77
86
|
type: :development
|
78
87
|
prerelease: false
|
79
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.6.4
|
80
94
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement:
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
83
97
|
none: false
|
84
98
|
requirements:
|
85
99
|
- - ! '>='
|
86
100
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
101
|
+
version: 0.6.0
|
88
102
|
type: :development
|
89
103
|
prerelease: false
|
90
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.6.0
|
91
110
|
description: Light rack-based framework with controllers, HAML/ERB views, router &
|
92
111
|
error handler
|
93
112
|
email: scott@scottnicol.co.uk
|
@@ -108,6 +127,7 @@ files:
|
|
108
127
|
- lib/spire/error.rb
|
109
128
|
- lib/spire/http.rb
|
110
129
|
- lib/spire/public.rb
|
130
|
+
- lib/spire/resource/buffer.rb
|
111
131
|
- lib/spire/resource/mime.rb
|
112
132
|
- lib/spire/router.rb
|
113
133
|
- spire.gemspec
|
@@ -126,7 +146,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
146
|
version: '0'
|
127
147
|
segments:
|
128
148
|
- 0
|
129
|
-
hash:
|
149
|
+
hash: -782353004668183630
|
130
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
151
|
none: false
|
132
152
|
requirements:
|
@@ -135,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
155
|
version: '0'
|
136
156
|
requirements: []
|
137
157
|
rubyforge_project:
|
138
|
-
rubygems_version: 1.8.
|
158
|
+
rubygems_version: 1.8.24
|
139
159
|
signing_key:
|
140
160
|
specification_version: 3
|
141
161
|
summary: A light controller-only rack framework with a dash of views
|