spar 1.0 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +33 -57
- data/lib/spar.rb +9 -3
- data/lib/spar/cli.rb +3 -3
- data/lib/spar/compiler.rb +8 -6
- data/lib/spar/deployers/cloudfront_deployer.rb +2 -1
- data/lib/spar/exceptions.rb +0 -3
- data/lib/spar/generators/templates/base/app/images/spar.png +0 -0
- data/lib/spar/generators/templates/base/config.yml +1 -1
- data/lib/spar/generators/templates/base/static/favicon.ico +0 -0
- data/lib/spar/generators/templates/pages/haml/app/pages/index.html.haml +13 -6
- data/lib/spar/generators/templates/pages/html/app/pages/index.html +15 -9
- data/lib/spar/generators/templates/styles/css/app/stylesheets/application.css +42 -1
- data/lib/spar/generators/templates/styles/sass/app/stylesheets/application.css.sass +43 -1
- data/lib/spar/helpers.rb +1 -1
- data/lib/spar/version.rb +1 -1
- metadata +42 -44
data/README.md
CHANGED
@@ -1,14 +1,38 @@
|
|
1
1
|
# Introduction
|
2
2
|
|
3
|
-
Spar
|
3
|
+
Spar is an opinionated framework that makes developing and deploying single-page web apps and static websites using modern front-end technology like SASS, Haml, and Coffeescript a cinch.
|
4
4
|
|
5
|
-
|
6
|
-
* Compilation pipeline
|
7
|
-
* Build & deployment support
|
5
|
+
We created Spar to decouple front-end development and deployment from specific backend languages like ruby, python, or Java.
|
8
6
|
|
9
|
-
|
7
|
+
Who should use Spar?
|
8
|
+
|
9
|
+
* Developers who have completely decoupled web applications (i.e. Old New Twitter) who want to do front-end development with state of the art tools like Coffeescript and SASS independent of their backend API stack.
|
10
|
+
|
11
|
+
* Designers who love using modern technology like SASS, Less, and Haml but don't feel comfortable running and deploying apps in frameworks like Rails or Django.
|
12
|
+
|
13
|
+
* Anyone who needs to make simple static websites and host them as static files on S3 (i.e. for really really cheap).
|
10
14
|
|
11
|
-
Under the hood, Spar
|
15
|
+
Under the hood, Spar uses Rack and Sprockets to provide a powerful asset pipeline similar to Rail's asset pipeline. If you're familiar with the Rail's asset pipeline, you'll feel right at home with Spar.
|
16
|
+
|
17
|
+
What makes Spar different?
|
18
|
+
|
19
|
+
* Intepret configuration variables in your assets. For instance, setup an `api_url` variable that's different for your development vs. production environments.
|
20
|
+
|
21
|
+
* No server-side language knowledge necessary. If you know how to type a few commands into the terminal you'll be good to go.
|
22
|
+
|
23
|
+
* Built in support for CSS, Sass, Less, HTML, Haml, Javascript, Coffeescript, Compass, Haml-Coffeescript templating, and more.
|
24
|
+
|
25
|
+
If you run into issues, please use the [issues page](https://github.com/GoBoundless/spar/issues) to report them and we'll help you out.
|
26
|
+
|
27
|
+
# Example Spar Applications
|
28
|
+
|
29
|
+
For your reference, and to build on top of, we've created two example applications using Spar.
|
30
|
+
|
31
|
+
The first is the quintessential TODO application as popularized by [addyosmani](http://addyosmani.github.com/todomvc/). The second, is a bootstrap application containing some of our favorite tools to kick-start the pretty (jQuery, Backbone, and Twitter Bootstrap).
|
32
|
+
|
33
|
+
Both can be found at our [spar-examples](https://github.com/GoBoundless/spar-examples) repo.
|
34
|
+
|
35
|
+
You can also see a demo of the TODO app [here](http://spar-demo-todo.boundless.com).
|
12
36
|
|
13
37
|
# Requirements
|
14
38
|
|
@@ -161,14 +185,6 @@ Or, in CSS:
|
|
161
185
|
```
|
162
186
|
You only need to do this for additional root-level Javascript and CSS based files, as Spar deploys all images, pages, and static files automatically.
|
163
187
|
|
164
|
-
# Example Spar Applications
|
165
|
-
|
166
|
-
For your reference, and to build on top of, we've created two example applications using Spar.
|
167
|
-
|
168
|
-
The first is the quintessential TODO application as popularized by [addyosmani](http://addyosmani.github.com/todomvc/). The second, is a bootstrap application containing some of our favorite tools to kick-start the pretty (jQuery, Backbone, and Twitter Bootstrap).
|
169
|
-
|
170
|
-
Both can be found at our [spar-examples](https://github.com/BoundlessLearning/spar-examples) repo.
|
171
|
-
|
172
188
|
# Deploying Your Spar App
|
173
189
|
|
174
190
|
Spar supports three different deployment methods out of the box:
|
@@ -216,56 +232,16 @@ production:
|
|
216
232
|
deploy_bucket: "mysite.test.com"
|
217
233
|
```
|
218
234
|
|
219
|
-
|
220
|
-
|
221
|
-
Next, you'll need visit the [AWS S3 Console](https://console.aws.amazon.com/s3/home) and create a bucket to host your app. We suggest using the same as your fully qualified domain name. You should not use this bucket for anything else.
|
222
|
-
|
223
|
-
![click here](http://spar-screenshots.s3.amazonaws.com/s3_click_here.png)
|
224
|
-
|
225
|
-
![create bucket](http://spar-screenshots.s3.amazonaws.com/s3_create_bucket.png)
|
226
|
-
|
227
|
-
Next, you'll need to turn on [S3 Website Hosting](http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html) in the S3 console.
|
228
|
-
|
229
|
-
![bucket properties](http://spar-screenshots.s3.amazonaws.com/s3_bucket_properties.png)
|
230
|
-
|
231
|
-
![enable website](http://spar-screenshots.s3.amazonaws.com/s3_enable_website.png)
|
232
|
-
|
233
|
-
You'll need to create a new `CNAME` record. How this works is up to your hosting provider, but it should look something like this.
|
234
|
-
|
235
|
-
app.example.com. IN CNAME app.example.com.s3-website-us-east-1.amazonaws.com.
|
236
|
-
|
237
|
-
### About Logging
|
238
|
-
|
239
|
-
You'll probably want to be able to log requests to your site. Even though your app uses cutting edge webscale tools like Airbrake, Loggly, Google Analytics, MixPanel, et al, eventually you'll want to know how many people hit you with IE6 or NoScript, and you gave them the middle finger.
|
240
|
-
|
241
|
-
Create a bucket log using the [AWS S3 Console](https://console.aws.amazon.com/s3/home). Give it a name like `logs.example.com` and update either your app's CloudFront distribution or your app's S3 bucket to write its log files to this log bucket.
|
242
|
-
|
243
|
-
![enable logging](http://spar-screenshots.s3.amazonaws.com/s3_enable_logging.png)
|
235
|
+
Now Spar will dpeloy your app directly to an S3 bucket. To learn more and see how to setup an S3 bucket as a website, see the [S3 Deployment Wiki Page](https://github.com/GoBoundless/spar/wiki/S3-Deployment)
|
244
236
|
|
245
237
|
|
246
238
|
## CloudFront Deployment
|
247
239
|
|
248
|
-
|
249
|
-
|
250
|
-
```yaml
|
251
|
-
production:
|
252
|
-
deploy_strategy: cloudfront
|
253
|
-
aws_key: "my_access_key"
|
254
|
-
aws_secret: "my+super+secret+access+key"
|
255
|
-
deploy_bucket: "mysite.test.com"
|
256
|
-
cloudfront_distribution: "distribution+id"
|
257
|
-
```
|
258
|
-
Cloudfront will turn your fast site into a *really* fast site. From the [AWS CloudFront Console](https://console.aws.amazon.com/cloudfront/home), create a new distribution *with the website form of your bucket name as the origin* and save the ID in your config.yml.
|
259
|
-
|
260
|
-
Take note of the **Domain Name** field (something like `d242ood0j0gl2v.cloudfront.net`). You will need to replace the CNAME you created earlier.
|
261
|
-
|
262
|
-
app.example.com. IN CNAME d242ood0j0gl2v.cloudfront.net.
|
263
|
-
|
264
|
-
Now, every time you deploy, Spar will automatically issue CloudFront invalidation requests for index.html (and anything else without a hash value). CloudFront invalidations usually take around 8 minutes, but they can take quite a bit lot longer when Amazon is having problems.
|
240
|
+
For details on Cloudfront deploys please see the [Cloudfront Deployment Wiki Page](https://github.com/GoBoundless/spar/wiki/Cloudfront-Deployment)
|
265
241
|
|
266
242
|
# Issues & Bugs
|
267
243
|
|
268
|
-
Please use our Github [issue tracker](https://github.com/
|
244
|
+
Please use our Github [issue tracker](https://github.com/GoBoundless/spar/issues) for Spar.
|
269
245
|
|
270
246
|
# License
|
271
247
|
|
data/lib/spar.rb
CHANGED
@@ -2,6 +2,11 @@ require 'rack'
|
|
2
2
|
require 'pathname'
|
3
3
|
require 'sprockets'
|
4
4
|
require 'haml'
|
5
|
+
require 'sass'
|
6
|
+
require 'sprockets-sass'
|
7
|
+
require 'compass'
|
8
|
+
require 'coffee-script'
|
9
|
+
require 'haml_coffee_assets'
|
5
10
|
|
6
11
|
module Spar
|
7
12
|
autoload :Version, 'spar/version'
|
@@ -71,6 +76,9 @@ module Spar
|
|
71
76
|
@sprockets ||= begin
|
72
77
|
env = Sprockets::Environment.new(root)
|
73
78
|
|
79
|
+
HamlCoffeeAssets.config.namespace = "window.HAML"
|
80
|
+
HamlCoffeeAssets.config.escapeHtml = false
|
81
|
+
|
74
82
|
if settings['compress']
|
75
83
|
env.js_compressor = Compressor::JS.new
|
76
84
|
env.css_compressor = Compressor::CSS.new
|
@@ -83,7 +91,7 @@ module Spar
|
|
83
91
|
env.append_path(root.join('vendor', child_folder))
|
84
92
|
Gem.loaded_specs.each do |name, gem|
|
85
93
|
env.append_path(File.join(gem.full_gem_path, 'vendor', 'assets', child_folder))
|
86
|
-
env.append_path(File.join(gem.full_gem_path, 'app', 'assets',
|
94
|
+
env.append_path(File.join(gem.full_gem_path, 'app', 'assets', child_folder))
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
@@ -94,8 +102,6 @@ module Spar
|
|
94
102
|
end
|
95
103
|
|
96
104
|
env.register_engine '.haml', Tilt::HamlTemplate
|
97
|
-
env.register_engine '.md', Tilt::BlueClothTemplate
|
98
|
-
env.register_engine '.textile', Tilt::RedClothTemplate
|
99
105
|
|
100
106
|
env.register_postprocessor 'text/css', Spar::DirectiveProcessor
|
101
107
|
env.register_postprocessor 'application/javascript', Spar::DirectiveProcessor
|
data/lib/spar/cli.rb
CHANGED
@@ -26,10 +26,9 @@ module Spar
|
|
26
26
|
desc 'deploy', 'Deploy the project.'
|
27
27
|
|
28
28
|
def deploy(environment='production')
|
29
|
-
say "Deploying: #{Spar.root}"
|
30
|
-
|
31
29
|
Spar.environment = environment
|
32
|
-
|
30
|
+
say "Deploying #{Spar.root} to the #{Spar.environment} environment"
|
31
|
+
|
33
32
|
if strategy = Spar.settings['deploy_strategy']
|
34
33
|
require "spar/deployers/#{strategy}_deployer"
|
35
34
|
|
@@ -44,6 +43,7 @@ module Spar
|
|
44
43
|
desc 'version', 'Show the current version of Spar'
|
45
44
|
|
46
45
|
def version
|
46
|
+
require 'spar/version'
|
47
47
|
puts "Spar Version #{Spar::VERSION}"
|
48
48
|
end
|
49
49
|
|
data/lib/spar/compiler.rb
CHANGED
@@ -42,16 +42,18 @@ module Spar
|
|
42
42
|
}
|
43
43
|
elsif logical_path =~ /\w+\.(?!js|css).+/
|
44
44
|
return {
|
45
|
-
:digest => Spar.settings['
|
45
|
+
:digest => Spar.settings['digest'],
|
46
46
|
:cache_control => Spar.settings['cache_control']
|
47
47
|
}
|
48
48
|
elsif file_path = Spar.sprockets.resolve(logical_path)
|
49
49
|
file = File.open(file_path, "rb").read
|
50
50
|
if header = file[Sprockets::DirectiveProcessor::HEADER_PATTERN, 0]
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
header.lines.each do |header|
|
52
|
+
if directive = header[Sprockets::DirectiveProcessor::DIRECTIVE_PATTERN, 1]
|
53
|
+
name, *args = Shellwords.shellwords(directive)
|
54
|
+
if name == 'deploy'
|
55
|
+
return deploy_directive_info(*args)
|
56
|
+
end
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
@@ -65,7 +67,7 @@ module Spar
|
|
65
67
|
options[arg.split(':')[0]] = arg.split(':')[1]
|
66
68
|
end
|
67
69
|
{
|
68
|
-
:digest => Spar.settings['
|
70
|
+
:digest => Spar.settings['digest'],
|
69
71
|
:cache_control => options['cache_control'] || Spar.settings['cache_control']
|
70
72
|
}
|
71
73
|
end
|
data/lib/spar/exceptions.rb
CHANGED
@@ -319,9 +319,6 @@ TEMPLATE = <<-HTML # :nodoc:
|
|
319
319
|
</table>
|
320
320
|
<div class="clear"></div>
|
321
321
|
</div> <!-- /RACK ENV -->
|
322
|
-
|
323
|
-
<p id="explanation">You're seeing this error because you have
|
324
|
-
enabled the <code>show_exceptions</code> setting.</p>
|
325
322
|
</div> <!-- /WRAP -->
|
326
323
|
</body>
|
327
324
|
</html>
|
Binary file
|
Binary file
|
@@ -1,11 +1,18 @@
|
|
1
|
-
!!!
|
1
|
+
!!! 5
|
2
2
|
%html
|
3
3
|
%head
|
4
|
-
%title Spar App
|
4
|
+
%title New Spar App
|
5
5
|
[{ stylesheet_link_tag(application) }]
|
6
|
+
|
6
7
|
%body
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
#wrap
|
9
|
+
%img{src: "[{ path_to(spar.png) }]", width: 200}
|
10
|
+
#summary
|
11
|
+
%h1 Spar
|
12
|
+
%h2 Welcome to your new Spar app.
|
13
|
+
%p
|
14
|
+
If you have any questions, please checkout out the
|
15
|
+
%a{href: "https://github.com/GoBoundless/spar", target: "_blank"} README
|
16
|
+
on Github. Have Fun!
|
17
|
+
|
11
18
|
[{ javascript_include_tag(application) }]
|
@@ -1,16 +1,22 @@
|
|
1
|
-
<!DOCTYPE html
|
1
|
+
<!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
<head>
|
4
|
-
<title>Spar App</title>
|
4
|
+
<title>New Spar App</title>
|
5
5
|
[{ stylesheet_link_tag(application) }]
|
6
6
|
</head>
|
7
7
|
<body>
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
<div id='wrap'>
|
9
|
+
<img src='[{ path_to(spar.png) }]' width='200' />
|
10
|
+
<div id='summary'>
|
11
|
+
<h1>Spar</h1>
|
12
|
+
<h2>Welcome to your new Spar app.</h2>
|
13
|
+
<p>
|
14
|
+
If you have any questions, please checkout out the
|
15
|
+
<a href='https://github.com/GoBoundless/spar' target='_blank'>README</a>
|
16
|
+
on Github. Have Fun!
|
17
|
+
</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
14
20
|
[{ javascript_include_tag(application) }]
|
15
21
|
</body>
|
16
|
-
</html>
|
22
|
+
</html>
|
@@ -13,6 +13,47 @@
|
|
13
13
|
*= require_tree .
|
14
14
|
*/
|
15
15
|
|
16
|
+
* {
|
17
|
+
margin: 0;
|
18
|
+
padding: 0;
|
19
|
+
border: 0;
|
20
|
+
outline: 0; }
|
21
|
+
|
22
|
+
html {
|
23
|
+
min-height: 100%;
|
24
|
+
height: 100%; }
|
25
|
+
|
16
26
|
body {
|
27
|
+
min-height: 100%;
|
28
|
+
height: 100%;
|
29
|
+
background: #eeeeee;
|
30
|
+
margin: 0;
|
31
|
+
padding: 0;
|
32
|
+
font-family: "Lucida Grande", "Lucida Sans Unicode", "Garuda"; }
|
33
|
+
|
34
|
+
#wrap {
|
35
|
+
min-height: 100%;
|
36
|
+
height: 100%;
|
37
|
+
width: 1000px;
|
17
38
|
background: white;
|
18
|
-
|
39
|
+
margin: 0 auto;
|
40
|
+
padding: 0 50px 0 50px;
|
41
|
+
border-left: 1px solid #dddddd;
|
42
|
+
border-right: 1px solid #dddddd;
|
43
|
+
text-align: center; }
|
44
|
+
|
45
|
+
img {
|
46
|
+
margin-top: 80px; }
|
47
|
+
|
48
|
+
a {
|
49
|
+
color: #be292b; }
|
50
|
+
|
51
|
+
h1 {
|
52
|
+
margin: 0 0 0.1em 0;
|
53
|
+
font-size: 72px;
|
54
|
+
color: #be292b; }
|
55
|
+
|
56
|
+
h2 {
|
57
|
+
margin: 0 0 1em 0;
|
58
|
+
font-size: 22px;
|
59
|
+
color: #333333; }
|
@@ -11,5 +11,47 @@
|
|
11
11
|
//= require_self
|
12
12
|
//= require_tree .
|
13
13
|
|
14
|
+
*
|
15
|
+
margin: 0
|
16
|
+
padding: 0
|
17
|
+
border: 0
|
18
|
+
outline: 0
|
19
|
+
|
20
|
+
html
|
21
|
+
min-height: 100%
|
22
|
+
height: 100%
|
23
|
+
|
14
24
|
body
|
15
|
-
|
25
|
+
min-height: 100%
|
26
|
+
height: 100%
|
27
|
+
background: #EEEEEE
|
28
|
+
margin: 0
|
29
|
+
padding: 0
|
30
|
+
font-family: "Lucida Grande", "Lucida Sans Unicode", "Garuda"
|
31
|
+
|
32
|
+
#wrap
|
33
|
+
min-height: 100%
|
34
|
+
height: 100%
|
35
|
+
width: 1000px
|
36
|
+
background: #FFFFFF
|
37
|
+
margin: 0 auto
|
38
|
+
padding: 0 50px 0 50px
|
39
|
+
border-left: 1px solid #DDDDDD
|
40
|
+
border-right: 1px solid #DDDDDD
|
41
|
+
text-align: center
|
42
|
+
|
43
|
+
img
|
44
|
+
margin-top: 80px
|
45
|
+
|
46
|
+
a
|
47
|
+
color: #BE292B
|
48
|
+
|
49
|
+
h1
|
50
|
+
margin: 0 0 0.1em 0
|
51
|
+
font-size: 72px
|
52
|
+
color: #BE292B
|
53
|
+
|
54
|
+
h2
|
55
|
+
margin: 0 0 1em 0
|
56
|
+
font-size: 22px
|
57
|
+
color: #333333
|
data/lib/spar/helpers.rb
CHANGED
@@ -72,7 +72,7 @@ module Spar
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def digest_for(logical_path, options={})
|
75
|
-
if Spar.settings['
|
75
|
+
if Spar.settings['digest'] && !Spar.settings['debug'] && asset = Spar.sprockets.find_asset(logical_path, options)
|
76
76
|
return asset.digest_path
|
77
77
|
end
|
78
78
|
return logical_path
|
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:
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
@@ -197,11 +197,36 @@ dependencies:
|
|
197
197
|
- - ! '>='
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: 2.6.0
|
200
|
+
- !ruby/object:Gem::Dependency
|
201
|
+
name: sprockets-sass
|
202
|
+
requirement: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
204
|
+
requirements:
|
205
|
+
- - ~>
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0.9'
|
208
|
+
- - ! '>='
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: 0.9.1
|
211
|
+
type: :runtime
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: !ruby/object:Gem::Requirement
|
214
|
+
none: false
|
215
|
+
requirements:
|
216
|
+
- - ~>
|
217
|
+
- !ruby/object:Gem::Version
|
218
|
+
version: '0.9'
|
219
|
+
- - ! '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 0.9.1
|
200
222
|
- !ruby/object:Gem::Dependency
|
201
223
|
name: compass
|
202
224
|
requirement: !ruby/object:Gem::Requirement
|
203
225
|
none: false
|
204
226
|
requirements:
|
227
|
+
- - ~>
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0.12'
|
205
230
|
- - ! '>='
|
206
231
|
- !ruby/object:Gem::Version
|
207
232
|
version: 0.12.2
|
@@ -210,20 +235,23 @@ dependencies:
|
|
210
235
|
version_requirements: !ruby/object:Gem::Requirement
|
211
236
|
none: false
|
212
237
|
requirements:
|
238
|
+
- - ~>
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: '0.12'
|
213
241
|
- - ! '>='
|
214
242
|
- !ruby/object:Gem::Version
|
215
243
|
version: 0.12.2
|
216
244
|
- !ruby/object:Gem::Dependency
|
217
|
-
name:
|
245
|
+
name: haml_coffee_assets
|
218
246
|
requirement: !ruby/object:Gem::Requirement
|
219
247
|
none: false
|
220
248
|
requirements:
|
221
249
|
- - ~>
|
222
250
|
- !ruby/object:Gem::Version
|
223
|
-
version: '
|
251
|
+
version: '1.5'
|
224
252
|
- - ! '>='
|
225
253
|
- !ruby/object:Gem::Version
|
226
|
-
version:
|
254
|
+
version: 1.5.1
|
227
255
|
type: :runtime
|
228
256
|
prerelease: false
|
229
257
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -231,10 +259,10 @@ dependencies:
|
|
231
259
|
requirements:
|
232
260
|
- - ~>
|
233
261
|
- !ruby/object:Gem::Version
|
234
|
-
version: '
|
262
|
+
version: '1.5'
|
235
263
|
- - ! '>='
|
236
264
|
- !ruby/object:Gem::Version
|
237
|
-
version:
|
265
|
+
version: 1.5.1
|
238
266
|
- !ruby/object:Gem::Dependency
|
239
267
|
name: bundler
|
240
268
|
requirement: !ruby/object:Gem::Requirement
|
@@ -323,22 +351,6 @@ dependencies:
|
|
323
351
|
- - ! '>='
|
324
352
|
- !ruby/object:Gem::Version
|
325
353
|
version: 0.4.2
|
326
|
-
- !ruby/object:Gem::Dependency
|
327
|
-
name: test-unit
|
328
|
-
requirement: !ruby/object:Gem::Requirement
|
329
|
-
none: false
|
330
|
-
requirements:
|
331
|
-
- - ! '>='
|
332
|
-
- !ruby/object:Gem::Version
|
333
|
-
version: '0'
|
334
|
-
type: :runtime
|
335
|
-
prerelease: false
|
336
|
-
version_requirements: !ruby/object:Gem::Requirement
|
337
|
-
none: false
|
338
|
-
requirements:
|
339
|
-
- - ! '>='
|
340
|
-
- !ruby/object:Gem::Version
|
341
|
-
version: '0'
|
342
354
|
- !ruby/object:Gem::Dependency
|
343
355
|
name: mime-types
|
344
356
|
requirement: !ruby/object:Gem::Requirement
|
@@ -371,22 +383,6 @@ dependencies:
|
|
371
383
|
- - ! '>='
|
372
384
|
- !ruby/object:Gem::Version
|
373
385
|
version: '0'
|
374
|
-
- !ruby/object:Gem::Dependency
|
375
|
-
name: rack-livereload
|
376
|
-
requirement: !ruby/object:Gem::Requirement
|
377
|
-
none: false
|
378
|
-
requirements:
|
379
|
-
- - ! '>='
|
380
|
-
- !ruby/object:Gem::Version
|
381
|
-
version: '0'
|
382
|
-
type: :runtime
|
383
|
-
prerelease: false
|
384
|
-
version_requirements: !ruby/object:Gem::Requirement
|
385
|
-
none: false
|
386
|
-
requirements:
|
387
|
-
- - ! '>='
|
388
|
-
- !ruby/object:Gem::Version
|
389
|
-
version: '0'
|
390
386
|
- !ruby/object:Gem::Dependency
|
391
387
|
name: yui-compressor
|
392
388
|
requirement: !ruby/object:Gem::Requirement
|
@@ -404,7 +400,7 @@ dependencies:
|
|
404
400
|
- !ruby/object:Gem::Version
|
405
401
|
version: '0'
|
406
402
|
- !ruby/object:Gem::Dependency
|
407
|
-
name:
|
403
|
+
name: cloudfront-invalidator
|
408
404
|
requirement: !ruby/object:Gem::Requirement
|
409
405
|
none: false
|
410
406
|
requirements:
|
@@ -419,9 +415,9 @@ dependencies:
|
|
419
415
|
- - ! '>='
|
420
416
|
- !ruby/object:Gem::Version
|
421
417
|
version: '0'
|
422
|
-
description: Spar uses Sprockets to provide an asset development environment
|
423
|
-
similar to the asset pipeline found in Rails. It
|
424
|
-
|
418
|
+
description: Spar uses Rack and Sprockets to provide an asset development environment
|
419
|
+
very similar to the asset pipeline found in Rails. It also has built in deployment
|
420
|
+
tasks for deploying your entire site to AWS S3 and Cloudfront.
|
425
421
|
email:
|
426
422
|
- matt@boundless.com
|
427
423
|
executables:
|
@@ -443,8 +439,10 @@ files:
|
|
443
439
|
- lib/spar/deployers/s3_deployer.rb
|
444
440
|
- lib/spar/directive_processor.rb
|
445
441
|
- lib/spar/exceptions.rb
|
442
|
+
- lib/spar/generators/templates/base/app/images/spar.png
|
446
443
|
- lib/spar/generators/templates/base/config.yml
|
447
444
|
- lib/spar/generators/templates/base/README
|
445
|
+
- lib/spar/generators/templates/base/static/favicon.ico
|
448
446
|
- lib/spar/generators/templates/pages/haml/app/pages/index.html.haml
|
449
447
|
- lib/spar/generators/templates/pages/html/app/pages/index.html
|
450
448
|
- lib/spar/generators/templates/scripts/coffee/app/javascripts/application.js.coffee
|
@@ -458,7 +456,7 @@ files:
|
|
458
456
|
- lib/spar/tasks.rb
|
459
457
|
- lib/spar/version.rb
|
460
458
|
- lib/spar.rb
|
461
|
-
homepage: http://github.com/
|
459
|
+
homepage: http://goboundless.github.com/spar
|
462
460
|
licenses: []
|
463
461
|
post_install_message:
|
464
462
|
rdoc_options: []
|