spire 0.4.8 → 0.4.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.8
1
+ 0.4.9
data/lib/spire/error.rb CHANGED
@@ -1,54 +1,18 @@
1
1
  module Spire
2
2
  class Error
3
- def initialize(opts={:status => 200, :message=> "Unknown Error"})
4
- case opts[:status]
5
- when 200
6
- self.return_error(opts[:message], opts[:status])
7
- when 404
8
- if opts[:message]
9
- self.return_error(opts[:message], opts[:status])
10
- else
11
- self.return_404
12
- end
13
- when 444
14
- self.return_444
15
- when 401
16
- self.return_401
17
- when 204
18
- self.return_204
19
- when 301
20
- self.return_301
21
- end
22
- end
3
+ def self.return_error(opts={:status => 200, :message => "An unknown error occured", :extended_message => ""})
4
+ spec = Gem::Specification.find_by_name("spire")
5
+ gem_root = spec.gem_dir
23
6
 
24
- def return_204
25
- @return = Response.new(self.style_error("204 - No content"), 'text/html;', 204)
7
+ contents = IO.read("#{gem_root}/lib/spire/templates/error/error.haml")
8
+ require 'haml'
9
+
10
+ error_template = Haml::Engine.new(contents).render(Object.new, {:@error_code => opts[:status], :@error_message => opts[:message], :@extended_message => opts[:extended_message]})
11
+ return Response.new(error_template, 'text/html;', opts[:status])
26
12
  end
27
13
 
28
- def return_301
29
- @return = Response.new(self.style_error("301 - Moved permanently"), 'text/html;', 301)
30
- end
31
-
32
- def return_401
33
- @return = Response.new(self.style_error("401 - Not authorized"), 'text/html;', 401)
34
- end
35
-
36
- def return_404
37
- @return = Response.new(self.style_error("404 - File not found"), 'text/html;', 404)
38
- end
39
-
40
- def return_444
41
- @return = Response.new(self.style_error("No response made by the server, check for a valid response"), 'text/html;', 404)
42
- end
43
-
44
- def style_error(message)
45
- return "<h2 style=\"font-family: 'Helvetica Neue', HelveticaNeue, Arial, Helvetica, sans-serif; \">
46
- #{message}
47
- </h2>"
48
- end
49
-
50
- def return_error(message, status)
51
- @return = Response.new(self.style_error(message), 'text/html;', status)
14
+ def self.manual_error(opts={:status => 200, :message => "An unknown error occured"})
15
+ return Response.new(opts[:message], 'text/html;', opts[:status])
52
16
  end
53
17
 
54
18
  def to_rack
data/lib/spire/public.rb CHANGED
@@ -26,7 +26,7 @@ module Spire
26
26
  file = result.extension_check
27
27
  puts file
28
28
  if file == 404
29
- return Error.new :status => 404, :message => "404 // File not found"
29
+ return Error.return_error :status => 404, :message => "404 // File not found"
30
30
  else
31
31
  return Response.new(file[:file], file[:content_type], 200)
32
32
  end
data/lib/spire/router.rb CHANGED
@@ -38,7 +38,7 @@ module Spire
38
38
  end
39
39
 
40
40
  if !@app["controller"]
41
- return Error.new :message => "Route not found in system/routes.rb", :status => 404
41
+ return Error.return_error :message => "Route not found in system/routes.rb", :status => 404
42
42
  end
43
43
 
44
44
  return self.run
@@ -52,7 +52,7 @@ module Spire
52
52
  buffer = @class.get_buffer
53
53
 
54
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
55
+ return Error.return_error :message => "No method/Response from method. See #{@app["controller"]}##{@app["action"]} and check for a response", :status => 404
56
56
  end
57
57
 
58
58
  content_type = "text/html;"
@@ -65,7 +65,7 @@ module Spire
65
65
  if @class.instance_variable_get(:@content_type)
66
66
  content_type = @class.instance_variable_get(:content_type)
67
67
  end
68
-
68
+
69
69
  if result
70
70
  buffer = buffer + result
71
71
  end
@@ -81,7 +81,7 @@ module Spire
81
81
  if response
82
82
  response.to_rack
83
83
  else
84
- Error.new :status => 444
84
+ Error.return_error :status => 444
85
85
  end
86
86
  end
87
87
  end
@@ -0,0 +1,49 @@
1
+ !!! 5
2
+ %html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"}
3
+ %head
4
+ :css
5
+ body {
6
+ font-family: 'Helvetica Neue';
7
+ padding-left: 30px;
8
+ background: #fafafa;
9
+ padding: 0;
10
+ margin: 0;
11
+ margin-bottom: 100px;
12
+ }
13
+ h1 {
14
+ font-size: 2.8em;
15
+ text-shadow: 0px 2px grey;
16
+ padding-left: 5%;
17
+ }
18
+ p {
19
+ font-size: 1.8em;
20
+ text-shadow: 0px 1px grey;
21
+ padding-left: 5%;
22
+ padding-right: 5%;
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
+ }
41
+ %body
42
+ %h1= @error_code
43
+ %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/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"
8
+ s.version = "0.4.9"
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-08"
12
+ s.date = "2012-08-11"
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"]
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "lib/spire/resource/buffer.rb",
32
32
  "lib/spire/resource/mime.rb",
33
33
  "lib/spire/router.rb",
34
+ "lib/spire/templates/error/error.haml",
34
35
  "spire.gemspec"
35
36
  ]
36
37
  s.homepage = "http://github.com/snicol/spire"
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.8
4
+ version: 0.4.9
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-08 00:00:00.000000000 Z
12
+ date: 2012-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -130,6 +130,7 @@ files:
130
130
  - lib/spire/resource/buffer.rb
131
131
  - lib/spire/resource/mime.rb
132
132
  - lib/spire/router.rb
133
+ - lib/spire/templates/error/error.haml
133
134
  - spire.gemspec
134
135
  homepage: http://github.com/snicol/spire
135
136
  licenses:
@@ -146,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
147
  version: '0'
147
148
  segments:
148
149
  - 0
149
- hash: 657964652971798131
150
+ hash: -3109762138428974111
150
151
  required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  none: false
152
153
  requirements: