spire 0.4.6 → 0.4.7
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 +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
|