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 CHANGED
@@ -8,6 +8,5 @@ gem "erubis", ">= 2.7.0"
8
8
  group :development do
9
9
  gem "bundler", ">= 1.0.0"
10
10
  gem "jeweler", ">= 1.6.4"
11
- gem "simplecov", ">= 0.6.0"
12
11
  end
13
12
 
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.9
1
+ 0.4.10
@@ -1,4 +1,4 @@
1
- require 'spire/http'
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.join($base_path, 'views', opts[:view])
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
- result = Public.new :file => file, :render => true
26
- file = result.extension_check
27
- puts file
28
- if file == 404
29
- return Error.return_error :status => 404, :message => "404 // File not found"
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(base_path, routes)
4
- $base_path = base_path
5
- @routes = routes
6
- @app = {}
3
+ def initialize(map)
4
+ @map = map
7
5
  end
8
6
 
9
- def disect(env)
10
- req = env['REQUEST_PATH'].split("/")
11
- @request = {"controller" => req[1], "action" => req[2]}
12
- end
7
+ def route(env)
8
+ request = Rack::Request.new(env)
9
+ request_path = env["REQUEST_PATH"]
13
10
 
14
- def route
15
- @app["controller"] = nil
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 @request["controller"] == nil
23
- route = @routes['default'].split("#")
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 !@app["controller"]
41
- return Error.return_error :message => "Route not found in system/routes.rb", :status => 404
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
- require "#{$base_path}/controllers/#{@app["controller"]}Controller"
49
- @class = Kernel.const_get(@app["controller"]).new()
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(@app["action"]).call
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(:content_type)
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.disect(env)
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: #fafafa;
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
- #trace {
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
@@ -1,6 +1,7 @@
1
1
  require 'spire/error'
2
+ require 'spire/map'
2
3
  require 'spire/router'
3
- require 'spire/http'
4
+ require 'spire/response'
4
5
  require 'spire/public'
5
6
 
6
7
  require 'spire/class/MainController'
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.9"
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-11"
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/http.rb",
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.9
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-11 00:00:00.000000000 Z
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/http.rb
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: -3109762138428974111
135
+ hash: 3764740053052310701
151
136
  required_rubygems_version: !ruby/object:Gem::Requirement
152
137
  none: false
153
138
  requirements: