spar 0.2.7 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/README.md +272 -1
  2. data/bin/spar +30 -1
  3. data/lib/spar.rb +128 -7
  4. data/lib/spar/assets/404.jpg +0 -0
  5. data/lib/spar/assets/500.jpg +0 -0
  6. data/lib/spar/cli.rb +75 -22
  7. data/lib/spar/compiled_asset.rb +90 -0
  8. data/lib/spar/compiler.rb +74 -0
  9. data/lib/spar/compressor.rb +18 -0
  10. data/lib/spar/deployers/cloudfront_deployer.rb +33 -0
  11. data/lib/spar/deployers/deployer.rb +26 -0
  12. data/lib/spar/deployers/local_deployer.rb +15 -0
  13. data/lib/spar/deployers/s3_deployer.rb +75 -0
  14. data/lib/spar/directive_processor.rb +36 -0
  15. data/lib/spar/exceptions.rb +330 -0
  16. data/lib/spar/generators/templates/{README → base/README} +0 -0
  17. data/lib/spar/generators/templates/base/config.yml +12 -0
  18. data/lib/spar/generators/templates/pages/haml/app/pages/index.html.haml +11 -0
  19. data/lib/spar/generators/templates/pages/html/app/pages/index.html +16 -0
  20. data/lib/spar/generators/templates/{app/assets/javascripts/javascript.js.coffee → scripts/coffee/app/javascripts/application.js.coffee} +6 -3
  21. data/lib/spar/generators/templates/scripts/js/app/javascripts/application.js +11 -0
  22. data/lib/spar/generators/templates/styles/css/app/stylesheets/application.css +18 -0
  23. data/lib/spar/generators/templates/{app/assets → styles/sass/app}/stylesheets/application.css.sass +8 -4
  24. data/lib/spar/helpers.rb +31 -102
  25. data/lib/spar/not_found.rb +64 -0
  26. data/lib/spar/rewrite.rb +29 -0
  27. data/lib/spar/static.rb +46 -0
  28. data/lib/spar/tasks.rb +8 -13
  29. data/lib/spar/version.rb +1 -1
  30. metadata +261 -66
  31. data/lib/spar/assets.rb +0 -78
  32. data/lib/spar/base.rb +0 -54
  33. data/lib/spar/css_compressor.rb +0 -17
  34. data/lib/spar/deployer.rb +0 -198
  35. data/lib/spar/generators/application.rb +0 -42
  36. data/lib/spar/generators/templates/Gemfile +0 -3
  37. data/lib/spar/generators/templates/Rakefile +0 -8
  38. data/lib/spar/generators/templates/app/views/index.haml +0 -7
  39. data/lib/spar/generators/templates/config.ru +0 -9
  40. data/lib/spar/generators/templates/config/application.rb +0 -12
  41. data/lib/spar/generators/templates/script/server +0 -1
  42. data/lib/spar/static_compiler.rb +0 -91
@@ -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, lib/assets/stylesheets, vendor/assets/stylesheets,
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
- // = require_self
11
- // = require_tree .
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
- class << self
7
- # When true, the asset paths will return digest paths.
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 asset_paths
17
- @asset_paths ||= begin
18
- paths = Spar::Helpers::AssetPaths.new()
19
- paths.asset_environment = Helpers.asset_environment
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 debug_assets? && asset = asset_paths.asset_for(source, 'js')
18
+ if Spar.settings['debug'] && asset = paths.asset_for(source, 'js')
31
19
  asset.to_a.map { |dep|
32
- javascript_tag(asset_path(dep, :ext => 'js', :body => true, :digest => digest_assets?))
20
+ javascript_tag(path_to(dep, :ext => 'js', :body => true))
33
21
  }
34
22
  else
35
- javascript_tag(asset_path(source, :ext => 'js', :body => false, :digest => digest_assets?))
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 debug_assets? && asset = asset_paths.asset_for(source, 'css')
34
+ if Spar.settings['debug'] && asset = paths.asset_for(source, 'css')
47
35
  asset.to_a.map { |dep|
48
- stylesheet_tag(asset_path(dep, :ext => 'css', :body => true, :protocol => :request, :digest => digest_assets?))
36
+ stylesheet_tag(path_to(dep, :ext => 'css', :body => true, :protocol => :request))
49
37
  }
50
38
  else
51
- stylesheet_tag(asset_path(source, :ext => 'css', :body => false, :protocol => :request, :digest => digest_assets?))
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
- def asset_path(source, options = {})
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
- attr_accessor :asset_environment, :asset_digests, :compile_assets, :digest_assets, :asset_host
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, nil, ext)
108
- asset_environment[source]
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, dir, options = {})
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, dir, options[:ext]) if options[:ext]
118
- source = rewrite_asset_path(source, dir, options)
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 digest_assets && asset_digests && (digest = asset_digests[logical_path])
130
- return digest
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, dir, options = {})
81
+ def rewrite_asset_path(source, options = {})
144
82
  if source[0] == ?/
145
83
  source
146
84
  else
147
- source = digest_for(source) unless options[:digest] == false
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, dir, ext)
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
@@ -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
@@ -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::Helpers.configure do |config|
5
- config.compile_assets = true
6
- end
4
+ puts "Precompiling Assets for environment #{Spar.environment}"
5
+ Spar.settings['deploy_path'] = 'public'
7
6
 
8
- compiler = Spar::StaticCompiler.new(App)
9
- compiler.compile
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 => :environment do
14
- system "/bin/rm", "-rf", App.public_path
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
@@ -1,3 +1,3 @@
1
1
  module Spar
2
- VERSION = "0.2.7"
2
+ VERSION = "1.0"
3
3
  end
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.2.7
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-08-29 00:00:00.000000000 Z
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: &70277087043500 !ruby/object:Gem::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: *70277087043500
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: &70277087076820 !ruby/object:Gem::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: *70277087076820
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: &70277087076300 !ruby/object:Gem::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: *70277087076300
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: &70277087075520 !ruby/object:Gem::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: *70277087075520
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: &70277087074780 !ruby/object:Gem::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: *70277087074780
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: &70277087074040 !ruby/object:Gem::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: *70277087074040
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: &70277087073300 !ruby/object:Gem::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: *70277087073300
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: &70277087072560 !ruby/object:Gem::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.4'
185
+ version: '2.6'
114
186
  - - ! '>='
115
187
  - !ruby/object:Gem::Version
116
- version: 2.4.0
188
+ version: 2.6.0
117
189
  type: :runtime
118
190
  prerelease: false
119
- version_requirements: *70277087072560
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: &70277087071820 !ruby/object:Gem::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: *70277087071820
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: &70277087071080 !ruby/object:Gem::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: *70277087071080
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: &70277087070340 !ruby/object:Gem::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.14'
267
+ version: '0.15'
156
268
  - - ! '>='
157
269
  - !ruby/object:Gem::Version
158
- version: 0.14.6
270
+ version: 0.15.2
159
271
  type: :runtime
160
272
  prerelease: false
161
- version_requirements: *70277087070340
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: &70277087069600 !ruby/object:Gem::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: *70277087069600
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: rack-test
178
- requirement: &70277087068860 !ruby/object:Gem::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.6'
311
+ version: '0.4'
184
312
  - - ! '>='
185
313
  - !ruby/object:Gem::Version
186
- version: 0.6.1
314
+ version: 0.4.2
187
315
  type: :runtime
188
316
  prerelease: false
189
- version_requirements: *70277087068860
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: &70277086965040 !ruby/object:Gem::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: *70277086965040
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: &70277086964580 !ruby/object:Gem::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: *70277086964580
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: &70277086964160 !ruby/object:Gem::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: *70277086964160
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: cloudfront-invalidator
225
- requirement: &70277086963660 !ruby/object:Gem::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.2'
381
+ version: '0'
231
382
  type: :runtime
232
383
  prerelease: false
233
- version_requirements: *70277086963660
234
- description: Spar uses Sprockets and Sinatra to provide an asset development environment
235
- very similar to the asset pipeline found in Rails. It allows you to use all the
236
- awesome features of the asset pipeline without all the heft of Rails.
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@boundlesslearning.com
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.rb
247
- - lib/spar/base.rb
434
+ - lib/spar/assets/404.jpg
435
+ - lib/spar/assets/500.jpg
248
436
  - lib/spar/cli.rb
249
- - lib/spar/css_compressor.rb
250
- - lib/spar/deployer.rb
251
- - lib/spar/generators/application.rb
252
- - lib/spar/generators/templates/app/assets/javascripts/javascript.js.coffee
253
- - lib/spar/generators/templates/app/assets/stylesheets/application.css.sass
254
- - lib/spar/generators/templates/app/views/index.haml
255
- - lib/spar/generators/templates/config/application.rb
256
- - lib/spar/generators/templates/config.ru
257
- - lib/spar/generators/templates/Gemfile
258
- - lib/spar/generators/templates/Rakefile
259
- - lib/spar/generators/templates/README
260
- - lib/spar/generators/templates/script/server
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/static_compiler.rb
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.10
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,