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.
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,