spar 0.2.7 → 1.0
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/README.md +272 -1
- data/bin/spar +30 -1
- data/lib/spar.rb +128 -7
- data/lib/spar/assets/404.jpg +0 -0
- data/lib/spar/assets/500.jpg +0 -0
- data/lib/spar/cli.rb +75 -22
- data/lib/spar/compiled_asset.rb +90 -0
- data/lib/spar/compiler.rb +74 -0
- data/lib/spar/compressor.rb +18 -0
- data/lib/spar/deployers/cloudfront_deployer.rb +33 -0
- data/lib/spar/deployers/deployer.rb +26 -0
- data/lib/spar/deployers/local_deployer.rb +15 -0
- data/lib/spar/deployers/s3_deployer.rb +75 -0
- data/lib/spar/directive_processor.rb +36 -0
- data/lib/spar/exceptions.rb +330 -0
- data/lib/spar/generators/templates/{README → base/README} +0 -0
- data/lib/spar/generators/templates/base/config.yml +12 -0
- data/lib/spar/generators/templates/pages/haml/app/pages/index.html.haml +11 -0
- data/lib/spar/generators/templates/pages/html/app/pages/index.html +16 -0
- data/lib/spar/generators/templates/{app/assets/javascripts/javascript.js.coffee → scripts/coffee/app/javascripts/application.js.coffee} +6 -3
- data/lib/spar/generators/templates/scripts/js/app/javascripts/application.js +11 -0
- data/lib/spar/generators/templates/styles/css/app/stylesheets/application.css +18 -0
- data/lib/spar/generators/templates/{app/assets → styles/sass/app}/stylesheets/application.css.sass +8 -4
- data/lib/spar/helpers.rb +31 -102
- data/lib/spar/not_found.rb +64 -0
- data/lib/spar/rewrite.rb +29 -0
- data/lib/spar/static.rb +46 -0
- data/lib/spar/tasks.rb +8 -13
- data/lib/spar/version.rb +1 -1
- metadata +261 -66
- data/lib/spar/assets.rb +0 -78
- data/lib/spar/base.rb +0 -54
- data/lib/spar/css_compressor.rb +0 -17
- data/lib/spar/deployer.rb +0 -198
- data/lib/spar/generators/application.rb +0 -42
- data/lib/spar/generators/templates/Gemfile +0 -3
- data/lib/spar/generators/templates/Rakefile +0 -8
- data/lib/spar/generators/templates/app/views/index.haml +0 -7
- data/lib/spar/generators/templates/config.ru +0 -9
- data/lib/spar/generators/templates/config/application.rb +0 -12
- data/lib/spar/generators/templates/script/server +0 -1
- data/lib/spar/static_compiler.rb +0 -91
    
        data/lib/spar/generators/templates/{app/assets → styles/sass/app}/stylesheets/application.css.sass
    RENAMED
    
    | @@ -1,11 +1,15 @@ | |
| 1 | 
            +
            //= deploy
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            // This is a manifest file that'll be compiled into application.css, which will include all the files
         | 
| 2 4 | 
             
            // listed below.
         | 
| 3 5 |  | 
| 4 | 
            -
            // Any CSS and SASS file within this directory | 
| 5 | 
            -
            // or vendor/assets/stylesheets of gems, if any, can be referenced here using a relative path.
         | 
| 6 | 
            +
            // Any CSS and SASS file within this directory or vendor/stylesheets can be referenced here using a relative path.
         | 
| 6 7 |  | 
| 7 8 | 
             
            // You're free to add application-wide styles to this file and they'll appear at the top of the
         | 
| 8 9 | 
             
            // compiled file, but it's generally better to create a new file per style scope.
         | 
| 9 10 |  | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 11 | 
            +
            //= require_self
         | 
| 12 | 
            +
            //= require_tree .
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            body
         | 
| 15 | 
            +
              background: white
         | 
    
        data/lib/spar/helpers.rb
    CHANGED
    
    | @@ -3,121 +3,67 @@ require 'sprockets' | |
| 3 3 | 
             
            module Spar
         | 
| 4 4 | 
             
              module Helpers
         | 
| 5 5 |  | 
| 6 | 
            -
                 | 
| 7 | 
            -
                   | 
| 8 | 
            -
                  attr_accessor :asset_environment, :asset_prefix, :digest_assets, :asset_digests, :compile_assets, :debug_assets, :asset_host
         | 
| 9 | 
            -
                  
         | 
| 10 | 
            -
                  # Convience method for configuring Sprockets::Helpers.
         | 
| 11 | 
            -
                  def configure
         | 
| 12 | 
            -
                    yield self
         | 
| 13 | 
            -
                  end
         | 
| 6 | 
            +
                def self.paths
         | 
| 7 | 
            +
                  @paths ||= Spar::Helpers::Paths.new()
         | 
| 14 8 | 
             
                end
         | 
| 15 9 |  | 
| 16 | 
            -
                def  | 
| 17 | 
            -
                   | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                    paths.asset_digests     = Helpers.asset_digests
         | 
| 21 | 
            -
                    paths.compile_assets    = compile_assets?
         | 
| 22 | 
            -
                    paths.digest_assets     = digest_assets?
         | 
| 23 | 
            -
                    paths.asset_host        = Helpers.asset_host
         | 
| 24 | 
            -
                    paths
         | 
| 25 | 
            -
                  end
         | 
| 10 | 
            +
                def self.path_to(asset_name, options={})
         | 
| 11 | 
            +
                  asset_name = asset_name.logical_path if asset_name.respond_to?(:logical_path)
         | 
| 12 | 
            +
                  path = paths.compute_public_path(asset_name, options.merge(:body => true))
         | 
| 13 | 
            +
                  options[:body] ? "#{path}?body=1" : path
         | 
| 26 14 | 
             
                end
         | 
| 27 15 |  | 
| 28 | 
            -
                def javascript_include_tag(*sources)
         | 
| 16 | 
            +
                def self.javascript_include_tag(*sources)
         | 
| 29 17 | 
             
                  sources.collect do |source|
         | 
| 30 | 
            -
                    if  | 
| 18 | 
            +
                    if Spar.settings['debug'] && asset = paths.asset_for(source, 'js')
         | 
| 31 19 | 
             
                      asset.to_a.map { |dep|
         | 
| 32 | 
            -
                        javascript_tag( | 
| 20 | 
            +
                        javascript_tag(path_to(dep, :ext => 'js', :body => true))
         | 
| 33 21 | 
             
                      }
         | 
| 34 22 | 
             
                    else
         | 
| 35 | 
            -
                      javascript_tag( | 
| 23 | 
            +
                      javascript_tag(path_to(source, :ext => 'js', :body => false))
         | 
| 36 24 | 
             
                    end
         | 
| 37 25 | 
             
                  end.join("\n")
         | 
| 38 26 | 
             
                end
         | 
| 39 27 |  | 
| 40 | 
            -
                def javascript_tag(src)
         | 
| 28 | 
            +
                def self.javascript_tag(src)
         | 
| 41 29 | 
             
                  "<script src='#{src}' charset='utf-8'></script>"
         | 
| 42 30 | 
             
                end
         | 
| 43 31 |  | 
| 44 | 
            -
                def stylesheet_link_tag(*sources)
         | 
| 32 | 
            +
                def self.stylesheet_link_tag(*sources)
         | 
| 45 33 | 
             
                  sources.collect do |source|
         | 
| 46 | 
            -
                    if  | 
| 34 | 
            +
                    if Spar.settings['debug'] && asset = paths.asset_for(source, 'css')
         | 
| 47 35 | 
             
                      asset.to_a.map { |dep|
         | 
| 48 | 
            -
                        stylesheet_tag( | 
| 36 | 
            +
                        stylesheet_tag(path_to(dep, :ext => 'css', :body => true, :protocol => :request))
         | 
| 49 37 | 
             
                      }
         | 
| 50 38 | 
             
                    else
         | 
| 51 | 
            -
                      stylesheet_tag( | 
| 39 | 
            +
                      stylesheet_tag(path_to(source, :ext => 'css', :body => false, :protocol => :request))
         | 
| 52 40 | 
             
                    end
         | 
| 53 41 | 
             
                  end.join("\n")
         | 
| 54 42 | 
             
                end
         | 
| 55 43 |  | 
| 56 | 
            -
                def stylesheet_tag(src)
         | 
| 44 | 
            +
                def self.stylesheet_tag(src)
         | 
| 57 45 | 
             
                  "<link href='#{src}' rel='stylesheet'>"
         | 
| 58 46 | 
             
                end
         | 
| 59 47 |  | 
| 60 | 
            -
                 | 
| 61 | 
            -
                  source = source.logical_path if source.respond_to?(:logical_path)
         | 
| 62 | 
            -
                  path = asset_paths.compute_public_path(source, Helpers.asset_prefix, options.merge(:body => true))
         | 
| 63 | 
            -
                  options[:body] ? "#{path}?body=1" : path
         | 
| 64 | 
            -
                end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                def image_path(source, options = {})
         | 
| 67 | 
            -
                  asset_path(source, options)
         | 
| 68 | 
            -
                end
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                def font_path(source, options = {})
         | 
| 71 | 
            -
                  asset_path(source, options)
         | 
| 72 | 
            -
                end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                def javascript_path(source, options = {})
         | 
| 75 | 
            -
                  asset_path(source, options.merge(:ext => 'js'))
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                def stylesheet_path(source, options = {})
         | 
| 79 | 
            -
                  asset_path(source, options.merge(:ext => 'css'))
         | 
| 80 | 
            -
                end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
              private
         | 
| 83 | 
            -
                def debug_assets?
         | 
| 84 | 
            -
                  compile_assets? && !!Helpers.debug_assets
         | 
| 85 | 
            -
                rescue NameError
         | 
| 86 | 
            -
                  false
         | 
| 87 | 
            -
                end
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                def compile_assets?
         | 
| 90 | 
            -
                  !!Helpers.compile_assets
         | 
| 91 | 
            -
                end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                def digest_assets?
         | 
| 94 | 
            -
                  !!Helpers.digest_assets
         | 
| 95 | 
            -
                end
         | 
| 96 | 
            -
             | 
| 97 | 
            -
                class AssetPaths
         | 
| 48 | 
            +
                class Paths
         | 
| 98 49 | 
             
                  URI_REGEXP = %r{^[-a-z]+://|^cid:|^//}
         | 
| 99 50 |  | 
| 100 | 
            -
                   | 
| 101 | 
            -
             | 
| 102 | 
            -
                  class AssetNotPrecompiledError < StandardError; end
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                  def asset_for(source, ext)
         | 
| 51 | 
            +
                  def asset_for(source, ext, options={})
         | 
| 105 52 | 
             
                    source = source.to_s
         | 
| 106 53 | 
             
                    return nil if is_uri?(source)
         | 
| 107 | 
            -
                    source = rewrite_extension(source,  | 
| 108 | 
            -
                     | 
| 54 | 
            +
                    source = rewrite_extension(source, ext)
         | 
| 55 | 
            +
                    Spar.sprockets.find_asset(source, options)
         | 
| 109 56 | 
             
                  rescue Sprockets::FileOutsidePaths
         | 
| 110 57 | 
             
                    nil
         | 
| 111 58 | 
             
                  end
         | 
| 112 59 |  | 
| 113 | 
            -
                  def compute_public_path(source,  | 
| 60 | 
            +
                  def compute_public_path(source, options = {})
         | 
| 114 61 | 
             
                    source = source.to_s
         | 
| 115 62 | 
             
                    return source if is_uri?(source)
         | 
| 116 63 |  | 
| 117 | 
            -
                    source = rewrite_extension(source,  | 
| 118 | 
            -
                    source = rewrite_asset_path(source,  | 
| 64 | 
            +
                    source = rewrite_extension(source, options[:ext]) if options[:ext]
         | 
| 65 | 
            +
                    source = rewrite_asset_path(source, options)
         | 
| 119 66 | 
             
                    source = rewrite_host_and_protocol(source, options[:protocol])
         | 
| 120 | 
            -
                    source = rewrite_for_compression(source)
         | 
| 121 67 | 
             
                    source
         | 
| 122 68 | 
             
                  end
         | 
| 123 69 |  | 
| @@ -125,33 +71,24 @@ module Spar | |
| 125 71 | 
             
                    path =~ URI_REGEXP
         | 
| 126 72 | 
             
                  end
         | 
| 127 73 |  | 
| 128 | 
            -
                  def digest_for(logical_path)
         | 
| 129 | 
            -
                    if  | 
| 130 | 
            -
                      return  | 
| 131 | 
            -
                    end
         | 
| 132 | 
            -
             | 
| 133 | 
            -
                    if compile_assets
         | 
| 134 | 
            -
                      if digest_assets && asset = asset_environment[logical_path]
         | 
| 135 | 
            -
                        return asset.digest_path
         | 
| 136 | 
            -
                      end
         | 
| 137 | 
            -
                      return logical_path
         | 
| 138 | 
            -
                    else
         | 
| 139 | 
            -
                      raise AssetNotPrecompiledError.new("#{logical_path} isn't precompiled")
         | 
| 74 | 
            +
                  def digest_for(logical_path, options={})
         | 
| 75 | 
            +
                    if Spar.settings['digests'] && !Spar.settings['debug'] && asset = Spar.sprockets.find_asset(logical_path, options)
         | 
| 76 | 
            +
                      return asset.digest_path
         | 
| 140 77 | 
             
                    end
         | 
| 78 | 
            +
                    return logical_path
         | 
| 141 79 | 
             
                  end
         | 
| 142 80 |  | 
| 143 | 
            -
                  def rewrite_asset_path(source,  | 
| 81 | 
            +
                  def rewrite_asset_path(source, options = {})
         | 
| 144 82 | 
             
                    if source[0] == ?/
         | 
| 145 83 | 
             
                      source
         | 
| 146 84 | 
             
                    else
         | 
| 147 | 
            -
                      source = digest_for(source | 
| 148 | 
            -
                      source = File.join(dir, source)
         | 
| 85 | 
            +
                      source = digest_for(source, options)
         | 
| 149 86 | 
             
                      source = "/#{source}" unless source =~ /^\//
         | 
| 150 87 | 
             
                      source
         | 
| 151 88 | 
             
                    end
         | 
| 152 89 | 
             
                  end
         | 
| 153 90 |  | 
| 154 | 
            -
                  def rewrite_extension(source,  | 
| 91 | 
            +
                  def rewrite_extension(source, ext)
         | 
| 155 92 | 
             
                    if ext && File.extname(source) != ".#{ext}"
         | 
| 156 93 | 
             
                      "#{source}.#{ext}"
         | 
| 157 94 | 
             
                    else
         | 
| @@ -159,16 +96,8 @@ module Spar | |
| 159 96 | 
             
                    end
         | 
| 160 97 | 
             
                  end
         | 
| 161 98 |  | 
| 162 | 
            -
                  def rewrite_for_compression(source)
         | 
| 163 | 
            -
                    if App.request_gzip and %w[.js .css].index File.extname(source)
         | 
| 164 | 
            -
                      source + 'gz'
         | 
| 165 | 
            -
                    else
         | 
| 166 | 
            -
                      source
         | 
| 167 | 
            -
                    end
         | 
| 168 | 
            -
                  end
         | 
| 169 | 
            -
             | 
| 170 99 | 
             
                  def rewrite_host_and_protocol(source, protocol = nil)
         | 
| 171 | 
            -
                    asset_host ? "#{asset_host}#{source}" : source
         | 
| 100 | 
            +
                    Spar.settings['asset_host'] ? "#{Spar.settings['asset_host']}#{source}" : source
         | 
| 172 101 | 
             
                  end
         | 
| 173 102 |  | 
| 174 103 | 
             
                end
         | 
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            require 'rack/showexceptions'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Spar
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              class NotFound < Rack::ShowExceptions
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def initialize
         | 
| 8 | 
            +
                  @template = ERB.new(TEMPLATE)
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def call(env)
         | 
| 12 | 
            +
                  path = env["PATH_INFO"]
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  body = [@template.result(binding)]
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  [404,
         | 
| 17 | 
            +
                   {"Content-Type" => "text/html",
         | 
| 18 | 
            +
                    "Content-Length" => Rack::Utils.bytesize(body.join).to_s},
         | 
| 19 | 
            +
                   body]
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            TEMPLATE = <<-HTML # :nodoc:
         | 
| 23 | 
            +
            <!DOCTYPE html>
         | 
| 24 | 
            +
            <html>
         | 
| 25 | 
            +
            <head>
         | 
| 26 | 
            +
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
         | 
| 27 | 
            +
              <title>Not Found: <%=h path %></title>
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            <style type="text/css" media="screen">
         | 
| 30 | 
            +
              html                {min-height: 100%; height: 100%;}
         | 
| 31 | 
            +
              *                   {margin: 0; padding: 0; border: 0; outline: 0;}
         | 
| 32 | 
            +
              body                {background: #EEEEEE; margin: 0; padding: 0;
         | 
| 33 | 
            +
                                   font-family: 'Lucida Grande', 'Lucida Sans Unicode',
         | 
| 34 | 
            +
                                   'Garuda';
         | 
| 35 | 
            +
                                   min-height: 100%; height: 100%;}
         | 
| 36 | 
            +
              code                {font-family: 'Lucida Console', monospace;
         | 
| 37 | 
            +
                                   font-size: 12px;}
         | 
| 38 | 
            +
              li                  {height: 18px;}
         | 
| 39 | 
            +
              ul                  {list-style: none; margin: 0; padding: 0;}
         | 
| 40 | 
            +
              ol:hover            {cursor: pointer;}
         | 
| 41 | 
            +
              ol li               {white-space: pre;}
         | 
| 42 | 
            +
              #explanation        {font-size: 12px; color: #666666;
         | 
| 43 | 
            +
                                   margin: 20px 0 0 100px;}
         | 
| 44 | 
            +
            /* WRAP */
         | 
| 45 | 
            +
              #wrap               {width: 1000px; background: #FFFFFF; margin: 0 auto; min-height: 100%; height: 100%;
         | 
| 46 | 
            +
                                   padding: 110px 50px 20px;
         | 
| 47 | 
            +
                                   text-align: center;
         | 
| 48 | 
            +
                                   border-left: 1px solid #DDDDDD;
         | 
| 49 | 
            +
                                   border-right: 1px solid #DDDDDD;}
         | 
| 50 | 
            +
              h1                  {margin: 20px 0 0; font-size: 36px; color: #BE292B;}
         | 
| 51 | 
            +
              h2                  {margin: 0; font-size: 22px; color: #333333;}
         | 
| 52 | 
            +
            </style>
         | 
| 53 | 
            +
            </head>
         | 
| 54 | 
            +
            <body>
         | 
| 55 | 
            +
              <div id="wrap">
         | 
| 56 | 
            +
                <img src="<%= env['SCRIPT_NAME'] %>/__spar__/404.jpg" alt="application error" height="223" width="191" />
         | 
| 57 | 
            +
                <h1><strong>Spar couldn't find <strong><%=h path %></strong></h1>
         | 
| 58 | 
            +
                <h2>Error 404</h2>
         | 
| 59 | 
            +
              </div> <!-- /WRAP -->
         | 
| 60 | 
            +
              </body>
         | 
| 61 | 
            +
            </html>
         | 
| 62 | 
            +
            HTML
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
            end
         | 
    
        data/lib/spar/rewrite.rb
    ADDED
    
    | @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'time'
         | 
| 2 | 
            +
            require 'uri'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Spar
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class Rewrite
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize(app)
         | 
| 9 | 
            +
                  @app = app
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def call(env)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  if env['HTTP_ACCEPT'] =~ /text\/html/
         | 
| 15 | 
            +
                    if env['PATH_INFO'] == '/'
         | 
| 16 | 
            +
                      env['PATH_INFO'] = '/index.html'
         | 
| 17 | 
            +
                    else
         | 
| 18 | 
            +
                      unless env['PATH_INFO'] =~ /\.[a-zA-Z]+$/
         | 
| 19 | 
            +
                        env['PATH_INFO'] << '.html'
         | 
| 20 | 
            +
                      end
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  @app.call(env)
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
    
        data/lib/spar/static.rb
    ADDED
    
    | @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            require 'rack/showexceptions'
         | 
| 2 | 
            +
            require 'rack/mime'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Spar
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class Static
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def call(env)
         | 
| 9 | 
            +
                  path = env["PATH_INFO"]
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # Try getting the file form the public directory - this overrides everything
         | 
| 12 | 
            +
                  public_path = "#{Spar.root.join('public')}/#{path}"
         | 
| 13 | 
            +
                  if File.exists?(public_path)
         | 
| 14 | 
            +
                    return send_static(public_path, env)
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  # Try getting the file form the static directory
         | 
| 18 | 
            +
                  static_path = "#{Spar.root.join('static')}/#{path}"
         | 
| 19 | 
            +
                  if File.exists?(static_path)
         | 
| 20 | 
            +
                    return send_static(static_path, env)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # Try getting the file form the local spar gems assets
         | 
| 24 | 
            +
                  spar_file = "#{File.dirname(__FILE__)}/assets/#{path.gsub('__spar__/','')}"
         | 
| 25 | 
            +
                  if File.exists?(spar_file)
         | 
| 26 | 
            +
                    return send_static(spar_file, env) 
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  # Return a 404 but let it pass on with the X-Cascade header
         | 
| 30 | 
            +
                  [ 404, { "Content-Type" => "text/plain", "Content-Length" => "9", "X-Cascade" => "pass" }, [ "Not found" ] ]
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def send_static(path, env)
         | 
| 34 | 
            +
                  last_modified = File.mtime(path).httpdate
         | 
| 35 | 
            +
                  return [304, {}, []] if env['HTTP_IF_MODIFIED_SINCE'] == last_modified
         | 
| 36 | 
            +
                  [ 200, 
         | 
| 37 | 
            +
                    {
         | 
| 38 | 
            +
                      "Last-Modified" => last_modified,
         | 
| 39 | 
            +
                      "Content-Type" => Rack::Mime.mime_type(File.extname(path), 'text/plain')
         | 
| 40 | 
            +
                    },
         | 
| 41 | 
            +
                    File.new(path)
         | 
| 42 | 
            +
                  ]
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
    
        data/lib/spar/tasks.rb
    CHANGED
    
    | @@ -1,21 +1,16 @@ | |
| 1 1 | 
             
            namespace :assets do
         | 
| 2 | 
            -
              desc "Compile all the assets"
         | 
| 2 | 
            +
              desc "Compile all the assets to the public directory"
         | 
| 3 3 | 
             
              task :precompile => :clean do
         | 
| 4 | 
            -
                Spar | 
| 5 | 
            -
             | 
| 6 | 
            -
                end
         | 
| 4 | 
            +
                puts "Precompiling Assets for environment #{Spar.environment}"
         | 
| 5 | 
            +
                Spar.settings['deploy_path'] = 'public'
         | 
| 7 6 |  | 
| 8 | 
            -
                 | 
| 9 | 
            -
             | 
| 7 | 
            +
                require "spar/deployers/local_deployer"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                LocalDeployer.new.run(Spar::Compiler.assets)
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              desc "Remove compiled assets"
         | 
| 13 | 
            -
              task :clean  | 
| 14 | 
            -
                system "/bin/rm", "-rf",  | 
| 13 | 
            +
              task :clean do
         | 
| 14 | 
            +
                system "/bin/rm", "-rf", 'public'
         | 
| 15 15 | 
             
              end
         | 
| 16 16 | 
             
            end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            desc "Deploy a freshly precompiled site to S3 and purge CloudFront as is appropriate."
         | 
| 19 | 
            -
            task :deploy => "assets:precompile" do
         | 
| 20 | 
            -
              Spar::Deployer.new(App).deploy
         | 
| 21 | 
            -
            end
         | 
    
        data/lib/spar/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: spar
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0 | 
| 4 | 
            +
              version: '1.0'
         | 
| 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: 2012- | 
| 12 | 
            +
            date: 2012-09-26 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: cucumber
         | 
| 16 | 
            -
              requirement:  | 
| 16 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,15 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :development
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements:  | 
| 24 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            +
                none: false
         | 
| 26 | 
            +
                requirements:
         | 
| 27 | 
            +
                - - ! '>='
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            +
                    version: '0'
         | 
| 25 30 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 31 | 
             
              name: aruba
         | 
| 27 | 
            -
              requirement:  | 
| 32 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 28 33 | 
             
                none: false
         | 
| 29 34 | 
             
                requirements:
         | 
| 30 35 | 
             
                - - ! '>='
         | 
| @@ -32,10 +37,37 @@ dependencies: | |
| 32 37 | 
             
                    version: '0'
         | 
| 33 38 | 
             
              type: :development
         | 
| 34 39 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements:  | 
| 40 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            +
                none: false
         | 
| 42 | 
            +
                requirements:
         | 
| 43 | 
            +
                - - ! '>='
         | 
| 44 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            +
                    version: '0'
         | 
| 46 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 47 | 
            +
              name: rack
         | 
| 48 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            +
                none: false
         | 
| 50 | 
            +
                requirements:
         | 
| 51 | 
            +
                - - ~>
         | 
| 52 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            +
                    version: '1.4'
         | 
| 54 | 
            +
                - - ! '>='
         | 
| 55 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 56 | 
            +
                    version: 1.4.1
         | 
| 57 | 
            +
              type: :runtime
         | 
| 58 | 
            +
              prerelease: false
         | 
| 59 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 60 | 
            +
                none: false
         | 
| 61 | 
            +
                requirements:
         | 
| 62 | 
            +
                - - ~>
         | 
| 63 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 64 | 
            +
                    version: '1.4'
         | 
| 65 | 
            +
                - - ! '>='
         | 
| 66 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            +
                    version: 1.4.1
         | 
| 36 68 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 69 | 
             
              name: sinatra
         | 
| 38 | 
            -
              requirement:  | 
| 70 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 39 71 | 
             
                none: false
         | 
| 40 72 | 
             
                requirements:
         | 
| 41 73 | 
             
                - - ~>
         | 
| @@ -46,10 +78,18 @@ dependencies: | |
| 46 78 | 
             
                    version: 1.3.2
         | 
| 47 79 | 
             
              type: :runtime
         | 
| 48 80 | 
             
              prerelease: false
         | 
| 49 | 
            -
              version_requirements:  | 
| 81 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 82 | 
            +
                none: false
         | 
| 83 | 
            +
                requirements:
         | 
| 84 | 
            +
                - - ~>
         | 
| 85 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 86 | 
            +
                    version: '1.3'
         | 
| 87 | 
            +
                - - ! '>='
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: 1.3.2
         | 
| 50 90 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 51 91 | 
             
              name: sass
         | 
| 52 | 
            -
              requirement:  | 
| 92 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 53 93 | 
             
                none: false
         | 
| 54 94 | 
             
                requirements:
         | 
| 55 95 | 
             
                - - ~>
         | 
| @@ -60,10 +100,18 @@ dependencies: | |
| 60 100 | 
             
                    version: 3.1.10
         | 
| 61 101 | 
             
              type: :runtime
         | 
| 62 102 | 
             
              prerelease: false
         | 
| 63 | 
            -
              version_requirements:  | 
| 103 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 104 | 
            +
                none: false
         | 
| 105 | 
            +
                requirements:
         | 
| 106 | 
            +
                - - ~>
         | 
| 107 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 108 | 
            +
                    version: '3.1'
         | 
| 109 | 
            +
                - - ! '>='
         | 
| 110 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 111 | 
            +
                    version: 3.1.10
         | 
| 64 112 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 65 113 | 
             
              name: haml
         | 
| 66 | 
            -
              requirement:  | 
| 114 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 67 115 | 
             
                none: false
         | 
| 68 116 | 
             
                requirements:
         | 
| 69 117 | 
             
                - - ~>
         | 
| @@ -74,10 +122,18 @@ dependencies: | |
| 74 122 | 
             
                    version: 3.1.4
         | 
| 75 123 | 
             
              type: :runtime
         | 
| 76 124 | 
             
              prerelease: false
         | 
| 77 | 
            -
              version_requirements:  | 
| 125 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 126 | 
            +
                none: false
         | 
| 127 | 
            +
                requirements:
         | 
| 128 | 
            +
                - - ~>
         | 
| 129 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 130 | 
            +
                    version: '3.1'
         | 
| 131 | 
            +
                - - ! '>='
         | 
| 132 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 133 | 
            +
                    version: 3.1.4
         | 
| 78 134 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 79 135 | 
             
              name: coffee-script
         | 
| 80 | 
            -
              requirement:  | 
| 136 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 81 137 | 
             
                none: false
         | 
| 82 138 | 
             
                requirements:
         | 
| 83 139 | 
             
                - - ~>
         | 
| @@ -88,10 +144,18 @@ dependencies: | |
| 88 144 | 
             
                    version: 2.2.0
         | 
| 89 145 | 
             
              type: :runtime
         | 
| 90 146 | 
             
              prerelease: false
         | 
| 91 | 
            -
              version_requirements:  | 
| 147 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 148 | 
            +
                none: false
         | 
| 149 | 
            +
                requirements:
         | 
| 150 | 
            +
                - - ~>
         | 
| 151 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            +
                    version: '2.2'
         | 
| 153 | 
            +
                - - ! '>='
         | 
| 154 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 155 | 
            +
                    version: 2.2.0
         | 
| 92 156 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 93 157 | 
             
              name: uglifier
         | 
| 94 | 
            -
              requirement:  | 
| 158 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 95 159 | 
             
                none: false
         | 
| 96 160 | 
             
                requirements:
         | 
| 97 161 | 
             
                - - ~>
         | 
| @@ -102,24 +166,56 @@ dependencies: | |
| 102 166 | 
             
                    version: 1.0.3
         | 
| 103 167 | 
             
              type: :runtime
         | 
| 104 168 | 
             
              prerelease: false
         | 
| 105 | 
            -
              version_requirements:  | 
| 169 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 170 | 
            +
                none: false
         | 
| 171 | 
            +
                requirements:
         | 
| 172 | 
            +
                - - ~>
         | 
| 173 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 174 | 
            +
                    version: '1.0'
         | 
| 175 | 
            +
                - - ! '>='
         | 
| 176 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 177 | 
            +
                    version: 1.0.3
         | 
| 106 178 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 107 179 | 
             
              name: sprockets
         | 
| 108 | 
            -
              requirement:  | 
| 180 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 109 181 | 
             
                none: false
         | 
| 110 182 | 
             
                requirements:
         | 
| 111 183 | 
             
                - - ~>
         | 
| 112 184 | 
             
                  - !ruby/object:Gem::Version
         | 
| 113 | 
            -
                    version: '2. | 
| 185 | 
            +
                    version: '2.6'
         | 
| 114 186 | 
             
                - - ! '>='
         | 
| 115 187 | 
             
                  - !ruby/object:Gem::Version
         | 
| 116 | 
            -
                    version: 2. | 
| 188 | 
            +
                    version: 2.6.0
         | 
| 117 189 | 
             
              type: :runtime
         | 
| 118 190 | 
             
              prerelease: false
         | 
| 119 | 
            -
              version_requirements:  | 
| 191 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 192 | 
            +
                none: false
         | 
| 193 | 
            +
                requirements:
         | 
| 194 | 
            +
                - - ~>
         | 
| 195 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 196 | 
            +
                    version: '2.6'
         | 
| 197 | 
            +
                - - ! '>='
         | 
| 198 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 199 | 
            +
                    version: 2.6.0
         | 
| 200 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 201 | 
            +
              name: compass
         | 
| 202 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 203 | 
            +
                none: false
         | 
| 204 | 
            +
                requirements:
         | 
| 205 | 
            +
                - - ! '>='
         | 
| 206 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 207 | 
            +
                    version: 0.12.2
         | 
| 208 | 
            +
              type: :runtime
         | 
| 209 | 
            +
              prerelease: false
         | 
| 210 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 211 | 
            +
                none: false
         | 
| 212 | 
            +
                requirements:
         | 
| 213 | 
            +
                - - ! '>='
         | 
| 214 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 215 | 
            +
                    version: 0.12.2
         | 
| 120 216 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 121 217 | 
             
              name: sprockets-sass
         | 
| 122 | 
            -
              requirement:  | 
| 218 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 123 219 | 
             
                none: false
         | 
| 124 220 | 
             
                requirements:
         | 
| 125 221 | 
             
                - - ~>
         | 
| @@ -130,10 +226,18 @@ dependencies: | |
| 130 226 | 
             
                    version: '0.5'
         | 
| 131 227 | 
             
              type: :runtime
         | 
| 132 228 | 
             
              prerelease: false
         | 
| 133 | 
            -
              version_requirements:  | 
| 229 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 230 | 
            +
                none: false
         | 
| 231 | 
            +
                requirements:
         | 
| 232 | 
            +
                - - ~>
         | 
| 233 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 234 | 
            +
                    version: '0.5'
         | 
| 235 | 
            +
                - - ! '>='
         | 
| 236 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 237 | 
            +
                    version: '0.5'
         | 
| 134 238 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 135 239 | 
             
              name: bundler
         | 
| 136 | 
            -
              requirement:  | 
| 240 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 137 241 | 
             
                none: false
         | 
| 138 242 | 
             
                requirements:
         | 
| 139 243 | 
             
                - - ~>
         | 
| @@ -144,24 +248,40 @@ dependencies: | |
| 144 248 | 
             
                    version: 1.0.18
         | 
| 145 249 | 
             
              type: :runtime
         | 
| 146 250 | 
             
              prerelease: false
         | 
| 147 | 
            -
              version_requirements:  | 
| 251 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 252 | 
            +
                none: false
         | 
| 253 | 
            +
                requirements:
         | 
| 254 | 
            +
                - - ~>
         | 
| 255 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 256 | 
            +
                    version: '1.0'
         | 
| 257 | 
            +
                - - ! '>='
         | 
| 258 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 259 | 
            +
                    version: 1.0.18
         | 
| 148 260 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 149 261 | 
             
              name: thor
         | 
| 150 | 
            -
              requirement:  | 
| 262 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 151 263 | 
             
                none: false
         | 
| 152 264 | 
             
                requirements:
         | 
| 153 265 | 
             
                - - ~>
         | 
| 154 266 | 
             
                  - !ruby/object:Gem::Version
         | 
| 155 | 
            -
                    version: '0. | 
| 267 | 
            +
                    version: '0.15'
         | 
| 156 268 | 
             
                - - ! '>='
         | 
| 157 269 | 
             
                  - !ruby/object:Gem::Version
         | 
| 158 | 
            -
                    version: 0. | 
| 270 | 
            +
                    version: 0.15.2
         | 
| 159 271 | 
             
              type: :runtime
         | 
| 160 272 | 
             
              prerelease: false
         | 
| 161 | 
            -
              version_requirements:  | 
| 273 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 274 | 
            +
                none: false
         | 
| 275 | 
            +
                requirements:
         | 
| 276 | 
            +
                - - ~>
         | 
| 277 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 278 | 
            +
                    version: '0.15'
         | 
| 279 | 
            +
                - - ! '>='
         | 
| 280 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 281 | 
            +
                    version: 0.15.2
         | 
| 162 282 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 163 283 | 
             
              name: rake
         | 
| 164 | 
            -
              requirement:  | 
| 284 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 165 285 | 
             
                none: false
         | 
| 166 286 | 
             
                requirements:
         | 
| 167 287 | 
             
                - - ~>
         | 
| @@ -172,24 +292,40 @@ dependencies: | |
| 172 292 | 
             
                    version: 0.9.2
         | 
| 173 293 | 
             
              type: :runtime
         | 
| 174 294 | 
             
              prerelease: false
         | 
| 175 | 
            -
              version_requirements:  | 
| 295 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 296 | 
            +
                none: false
         | 
| 297 | 
            +
                requirements:
         | 
| 298 | 
            +
                - - ~>
         | 
| 299 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 300 | 
            +
                    version: '0.9'
         | 
| 301 | 
            +
                - - ! '>='
         | 
| 302 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 303 | 
            +
                    version: 0.9.2
         | 
| 176 304 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 177 | 
            -
              name:  | 
| 178 | 
            -
              requirement:  | 
| 305 | 
            +
              name: listen
         | 
| 306 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 179 307 | 
             
                none: false
         | 
| 180 308 | 
             
                requirements:
         | 
| 181 309 | 
             
                - - ~>
         | 
| 182 310 | 
             
                  - !ruby/object:Gem::Version
         | 
| 183 | 
            -
                    version: '0. | 
| 311 | 
            +
                    version: '0.4'
         | 
| 184 312 | 
             
                - - ! '>='
         | 
| 185 313 | 
             
                  - !ruby/object:Gem::Version
         | 
| 186 | 
            -
                    version: 0. | 
| 314 | 
            +
                    version: 0.4.2
         | 
| 187 315 | 
             
              type: :runtime
         | 
| 188 316 | 
             
              prerelease: false
         | 
| 189 | 
            -
              version_requirements:  | 
| 317 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 318 | 
            +
                none: false
         | 
| 319 | 
            +
                requirements:
         | 
| 320 | 
            +
                - - ~>
         | 
| 321 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 322 | 
            +
                    version: '0.4'
         | 
| 323 | 
            +
                - - ! '>='
         | 
| 324 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 325 | 
            +
                    version: 0.4.2
         | 
| 190 326 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 191 327 | 
             
              name: test-unit
         | 
| 192 | 
            -
              requirement:  | 
| 328 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 193 329 | 
             
                none: false
         | 
| 194 330 | 
             
                requirements:
         | 
| 195 331 | 
             
                - - ! '>='
         | 
| @@ -197,10 +333,15 @@ dependencies: | |
| 197 333 | 
             
                    version: '0'
         | 
| 198 334 | 
             
              type: :runtime
         | 
| 199 335 | 
             
              prerelease: false
         | 
| 200 | 
            -
              version_requirements:  | 
| 336 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 337 | 
            +
                none: false
         | 
| 338 | 
            +
                requirements:
         | 
| 339 | 
            +
                - - ! '>='
         | 
| 340 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 341 | 
            +
                    version: '0'
         | 
| 201 342 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 202 343 | 
             
              name: mime-types
         | 
| 203 | 
            -
              requirement:  | 
| 344 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 204 345 | 
             
                none: false
         | 
| 205 346 | 
             
                requirements:
         | 
| 206 347 | 
             
                - - ! '>='
         | 
| @@ -208,10 +349,15 @@ dependencies: | |
| 208 349 | 
             
                    version: '0'
         | 
| 209 350 | 
             
              type: :runtime
         | 
| 210 351 | 
             
              prerelease: false
         | 
| 211 | 
            -
              version_requirements:  | 
| 352 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 353 | 
            +
                none: false
         | 
| 354 | 
            +
                requirements:
         | 
| 355 | 
            +
                - - ! '>='
         | 
| 356 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 357 | 
            +
                    version: '0'
         | 
| 212 358 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 213 359 | 
             
              name: aws-sdk
         | 
| 214 | 
            -
              requirement:  | 
| 360 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 215 361 | 
             
                none: false
         | 
| 216 362 | 
             
                requirements:
         | 
| 217 363 | 
             
                - - ! '>='
         | 
| @@ -219,23 +365,65 @@ dependencies: | |
| 219 365 | 
             
                    version: '0'
         | 
| 220 366 | 
             
              type: :runtime
         | 
| 221 367 | 
             
              prerelease: false
         | 
| 222 | 
            -
              version_requirements:  | 
| 368 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 369 | 
            +
                none: false
         | 
| 370 | 
            +
                requirements:
         | 
| 371 | 
            +
                - - ! '>='
         | 
| 372 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 373 | 
            +
                    version: '0'
         | 
| 223 374 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 224 | 
            -
              name:  | 
| 225 | 
            -
              requirement:  | 
| 375 | 
            +
              name: rack-livereload
         | 
| 376 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 226 377 | 
             
                none: false
         | 
| 227 378 | 
             
                requirements:
         | 
| 228 | 
            -
                - -  | 
| 379 | 
            +
                - - ! '>='
         | 
| 229 380 | 
             
                  - !ruby/object:Gem::Version
         | 
| 230 | 
            -
                    version: '0 | 
| 381 | 
            +
                    version: '0'
         | 
| 231 382 | 
             
              type: :runtime
         | 
| 232 383 | 
             
              prerelease: false
         | 
| 233 | 
            -
              version_requirements:  | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
             | 
| 384 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 385 | 
            +
                none: false
         | 
| 386 | 
            +
                requirements:
         | 
| 387 | 
            +
                - - ! '>='
         | 
| 388 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 389 | 
            +
                    version: '0'
         | 
| 390 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 391 | 
            +
              name: yui-compressor
         | 
| 392 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 393 | 
            +
                none: false
         | 
| 394 | 
            +
                requirements:
         | 
| 395 | 
            +
                - - ! '>='
         | 
| 396 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 397 | 
            +
                    version: '0'
         | 
| 398 | 
            +
              type: :runtime
         | 
| 399 | 
            +
              prerelease: false
         | 
| 400 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 401 | 
            +
                none: false
         | 
| 402 | 
            +
                requirements:
         | 
| 403 | 
            +
                - - ! '>='
         | 
| 404 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 405 | 
            +
                    version: '0'
         | 
| 406 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 407 | 
            +
              name: bluecloth
         | 
| 408 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 409 | 
            +
                none: false
         | 
| 410 | 
            +
                requirements:
         | 
| 411 | 
            +
                - - ! '>='
         | 
| 412 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 413 | 
            +
                    version: '0'
         | 
| 414 | 
            +
              type: :runtime
         | 
| 415 | 
            +
              prerelease: false
         | 
| 416 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 417 | 
            +
                none: false
         | 
| 418 | 
            +
                requirements:
         | 
| 419 | 
            +
                - - ! '>='
         | 
| 420 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 421 | 
            +
                    version: '0'
         | 
| 422 | 
            +
            description: Spar uses Sprockets to provide an asset development environment very
         | 
| 423 | 
            +
              similar to the asset pipeline found in Rails. It allows you to use all the awesome
         | 
| 424 | 
            +
              features of the asset pipeline without all the heft of Rails.
         | 
| 237 425 | 
             
            email:
         | 
| 238 | 
            -
            - matt@ | 
| 426 | 
            +
            - matt@boundless.com
         | 
| 239 427 | 
             
            executables:
         | 
| 240 428 | 
             
            - spar
         | 
| 241 429 | 
             
            extensions: []
         | 
| @@ -243,23 +431,30 @@ extra_rdoc_files: [] | |
| 243 431 | 
             
            files:
         | 
| 244 432 | 
             
            - README.md
         | 
| 245 433 | 
             
            - bin/spar
         | 
| 246 | 
            -
            - lib/spar/assets. | 
| 247 | 
            -
            - lib/spar/ | 
| 434 | 
            +
            - lib/spar/assets/404.jpg
         | 
| 435 | 
            +
            - lib/spar/assets/500.jpg
         | 
| 248 436 | 
             
            - lib/spar/cli.rb
         | 
| 249 | 
            -
            - lib/spar/ | 
| 250 | 
            -
            - lib/spar/ | 
| 251 | 
            -
            - lib/spar/ | 
| 252 | 
            -
            - lib/spar/ | 
| 253 | 
            -
            - lib/spar/ | 
| 254 | 
            -
            - lib/spar/ | 
| 255 | 
            -
            - lib/spar/ | 
| 256 | 
            -
            - lib/spar/ | 
| 257 | 
            -
            - lib/spar/ | 
| 258 | 
            -
            - lib/spar/generators/templates/ | 
| 259 | 
            -
            - lib/spar/generators/templates/README
         | 
| 260 | 
            -
            - lib/spar/generators/templates/ | 
| 437 | 
            +
            - lib/spar/compiled_asset.rb
         | 
| 438 | 
            +
            - lib/spar/compiler.rb
         | 
| 439 | 
            +
            - lib/spar/compressor.rb
         | 
| 440 | 
            +
            - lib/spar/deployers/cloudfront_deployer.rb
         | 
| 441 | 
            +
            - lib/spar/deployers/deployer.rb
         | 
| 442 | 
            +
            - lib/spar/deployers/local_deployer.rb
         | 
| 443 | 
            +
            - lib/spar/deployers/s3_deployer.rb
         | 
| 444 | 
            +
            - lib/spar/directive_processor.rb
         | 
| 445 | 
            +
            - lib/spar/exceptions.rb
         | 
| 446 | 
            +
            - lib/spar/generators/templates/base/config.yml
         | 
| 447 | 
            +
            - lib/spar/generators/templates/base/README
         | 
| 448 | 
            +
            - lib/spar/generators/templates/pages/haml/app/pages/index.html.haml
         | 
| 449 | 
            +
            - lib/spar/generators/templates/pages/html/app/pages/index.html
         | 
| 450 | 
            +
            - lib/spar/generators/templates/scripts/coffee/app/javascripts/application.js.coffee
         | 
| 451 | 
            +
            - lib/spar/generators/templates/scripts/js/app/javascripts/application.js
         | 
| 452 | 
            +
            - lib/spar/generators/templates/styles/css/app/stylesheets/application.css
         | 
| 453 | 
            +
            - lib/spar/generators/templates/styles/sass/app/stylesheets/application.css.sass
         | 
| 261 454 | 
             
            - lib/spar/helpers.rb
         | 
| 262 | 
            -
            - lib/spar/ | 
| 455 | 
            +
            - lib/spar/not_found.rb
         | 
| 456 | 
            +
            - lib/spar/rewrite.rb
         | 
| 457 | 
            +
            - lib/spar/static.rb
         | 
| 263 458 | 
             
            - lib/spar/tasks.rb
         | 
| 264 459 | 
             
            - lib/spar/version.rb
         | 
| 265 460 | 
             
            - lib/spar.rb
         | 
| @@ -283,7 +478,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 283 478 | 
             
                  version: '0'
         | 
| 284 479 | 
             
            requirements: []
         | 
| 285 480 | 
             
            rubyforge_project: 
         | 
| 286 | 
            -
            rubygems_version: 1.8. | 
| 481 | 
            +
            rubygems_version: 1.8.23
         | 
| 287 482 | 
             
            signing_key: 
         | 
| 288 483 | 
             
            specification_version: 3
         | 
| 289 484 | 
             
            summary: A simple framework for developing single page web apps with support for haml,
         |