spire 0.4.8 → 0.4.9
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/VERSION +1 -1
 - data/lib/spire/error.rb +10 -46
 - data/lib/spire/public.rb +1 -1
 - data/lib/spire/router.rb +4 -4
 - data/lib/spire/templates/error/error.haml +49 -0
 - data/spire.gemspec +3 -2
 - metadata +4 -3
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.4. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.4.9
         
     | 
    
        data/lib/spire/error.rb
    CHANGED
    
    | 
         @@ -1,54 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Spire
         
     | 
| 
       2 
2 
     | 
    
         
             
                class Error
         
     | 
| 
       3 
     | 
    
         
            -
                    def  
     | 
| 
       4 
     | 
    
         
            -
                         
     | 
| 
       5 
     | 
    
         
            -
                         
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                         
     | 
| 
      
 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  
     | 
| 
       29 
     | 
    
         
            -
                         
     | 
| 
       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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
    
         
            +
              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- 
     | 
| 
      
 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. 
     | 
| 
      
 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- 
     | 
| 
      
 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:  
     | 
| 
      
 150 
     | 
    
         
            +
                  hash: -3109762138428974111
         
     | 
| 
       150 
151 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       151 
152 
     | 
    
         
             
              none: false
         
     | 
| 
       152 
153 
     | 
    
         
             
              requirements:
         
     |