spar 0.2.7 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,
|