sinatra-assetpack 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/.gitignore +1 -0
  2. data/HISTORY.md +15 -0
  3. data/README.md +203 -112
  4. data/Rakefile +17 -0
  5. data/docsrc/style.css +32 -0
  6. data/{example → examples/basic}/.gitignore +0 -0
  7. data/{example → examples/basic}/Rakefile +0 -0
  8. data/{example → examples/basic}/app.rb +0 -0
  9. data/{example → examples/basic}/app/css/test.sass +0 -0
  10. data/{example → examples/basic}/app/images/icon.png +0 -0
  11. data/{example → examples/basic}/app/js/app.js +0 -0
  12. data/{example → examples/basic}/app/js/vendor/jquery.js +0 -0
  13. data/{example → examples/basic}/app/js/vendor/jquery.plugin.js +0 -0
  14. data/{example → examples/basic}/app/js/vendor/underscore.js +0 -0
  15. data/{example → examples/basic}/views/index.erb +0 -0
  16. data/examples/compass/.gitignore +1 -0
  17. data/examples/compass/Rakefile +7 -0
  18. data/examples/compass/app.rb +45 -0
  19. data/examples/compass/app/css/main.scss +64 -0
  20. data/examples/compass/app/images/icon-scfd8d7d404.png +0 -0
  21. data/examples/compass/app/images/icon/mail.png +0 -0
  22. data/examples/compass/app/images/icon/refresh.png +0 -0
  23. data/examples/compass/app/images/junk/mail.png +0 -0
  24. data/examples/compass/app/images/junk/refresh.png +0 -0
  25. data/examples/compass/app/js/app.js +3 -0
  26. data/examples/compass/app/js/vendor/jquery.js +2 -0
  27. data/examples/compass/app/js/vendor/jquery.plugin.js +2 -0
  28. data/examples/compass/app/js/vendor/underscore.js +2 -0
  29. data/examples/compass/config.ru +3 -0
  30. data/examples/compass/views/index.erb +15 -0
  31. data/lib/sinatra/assetpack.rb +1 -1
  32. data/lib/sinatra/assetpack/class_methods.rb +13 -7
  33. data/lib/sinatra/assetpack/options.rb +0 -8
  34. data/lib/sinatra/assetpack/package.rb +1 -1
  35. data/lib/sinatra/assetpack/rake.rb +7 -1
  36. data/lib/sinatra/assetpack/version.rb +1 -1
  37. data/test/app/app.rb +4 -0
  38. data/test/app/app/css/behavior.htc +1 -0
  39. data/test/app/app/js_glob/a/b/c1/hello.js +1 -0
  40. data/test/app/app/js_glob/a/b/c2/hi.js +1 -0
  41. data/test/app/app/js_glob/a/b/c2/hola.js +1 -0
  42. data/test/cache_test.rb +3 -4
  43. data/test/compressed_test.rb +30 -0
  44. data/test/glob_test.rb +42 -0
  45. data/test/local_file_test.rb +1 -2
  46. data/test/mime_type_test.rb +33 -0
  47. data/test/non_existent_test.rb +1 -2
  48. data/test/options_test.rb +1 -2
  49. data/test/order_test.rb +1 -2
  50. data/test/stylus_test.rb +1 -2
  51. data/test/template_cache_test.rb +29 -0
  52. data/test/test_helper.rb +6 -7
  53. data/test/yui_test.rb +1 -1
  54. metadata +59 -37
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  /Gemfile.lock
2
2
  /.rvmrc
3
3
  /.sass-cache
4
+ /doc/
data/HISTORY.md CHANGED
@@ -1,3 +1,18 @@
1
+ v0.0.9 - Sep 18, 2011
2
+ ---------------------
3
+
4
+ ### Fixed:
5
+ * Fixed a bad route terminating issue. (#9)
6
+ * Fix the Rake task when the main App class is in a module. (#11)
7
+
8
+ ### Changed:
9
+ * Use Sinatra's `template_cache`. This makes AssetPack honor Sinatra's
10
+ `reload_templates` setting. (#15)
11
+
12
+ ### Added:
13
+ * Added .htc (IE behavior files) to the list of file formats to be served.
14
+ * Added examples.
15
+
1
16
  v0.0.8 - Sep 06, 2011
2
17
  ---------------------
3
18
 
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # Sinatra AssetPack
1
+ # [Sinatra AssetPack](http://ricostacruz.com/sinatra-assetpack)
2
2
  #### Asset packer for Sinatra
3
3
 
4
4
  This is *the* most convenient way to set up your CSS/JS (and images) in a
5
- Sinatra app. Seriously. No need for crappy routes to render Sass or whatever.
6
- No-siree!
5
+ [Sinatra](http://sinatrarb.com) app. Seriously. No need for crappy routes to
6
+ render Sass or whatever. No-siree!
7
7
 
8
8
  1. Drop your assets into `/app` like so (you can configure directories don't worry):
9
9
  * JavaScript/CoffeeScript files in `/app/js`
@@ -14,12 +14,26 @@ No-siree!
14
14
  messy *script* and *link* tags
15
15
  5. BOOM! You're in business baby!
16
16
 
17
+ Installation
18
+ ------------
19
+
20
+ Sinatra AssetPack is a simple Ruby gem. You can install it via `gem install`.
21
+
22
+ ``` console
23
+ $ gem install sinatra-assetpack
24
+ ```
25
+
26
+ #### Bundler users
27
+ If you use Bundler, you will need to add it to your *Gemfile*.
28
+
29
+ ``` ruby
30
+ gem 'sinatra-assetpack', :require => 'sinatra/assetpack'
31
+ ```
32
+
33
+
17
34
  Setup
18
35
  -----
19
36
 
20
- * Bundler? Add to *Gemfile*: `gem 'sinatra-assetpack', :require => 'sinatra/assetpack'`
21
- * Else: `$ gem install sinatra-assetpack`
22
-
23
37
  Install the plugin and add some options. (Feel free to omit the *Optional*
24
38
  items, they're listed here for posterity):
25
39
 
@@ -52,18 +66,20 @@ class App < Sinatra::Base
52
66
  end
53
67
  ```
54
68
 
55
- In your layouts:
69
+ #### Using in layouts
70
+ In your layouts, use the `css` and `js` helpers:
71
+ *(Use haml? Great! Use `!= css :youreawesome` instead.)*
56
72
 
57
73
  ``` erb
58
74
  <%= css :application, :media => 'screen' %>
59
75
  <%= js :app %>
60
76
  ```
61
77
 
62
- *(Use haml? Great! Use `!= css :youreawesome`.)*
63
78
 
64
79
  And then what?
65
80
  --------------
66
81
 
82
+ #### Development mode
67
83
  If you're on **development** mode, it serves each of the files as so:
68
84
 
69
85
  ``` html
@@ -73,6 +89,7 @@ If you're on **development** mode, it serves each of the files as so:
73
89
  <script type='text/javascript' src='/js/app/main.589491.js'></script>
74
90
  ```
75
91
 
92
+ #### Production mode
76
93
  If you're on **production** mode, it serves a compressed version in the URLs you specify:
77
94
 
78
95
  ``` html
@@ -83,32 +100,32 @@ If you're on **production** mode, it serves a compressed version in the URLs you
83
100
  Features
84
101
  --------
85
102
 
86
- * __CoffeeScript support__: Just add your coffee files in one of the paths
103
+ * __CoffeeScript support__ Just add your coffee files in one of the paths
87
104
  served (in the example, `app/js/hello.coffee`) and they will be available as JS
88
105
  files (`http://localhost:4567/js/hello.js`).
89
106
 
90
- * __Sass/Less/SCSS support__: Works the same way. Place your dynamic CSS files
107
+ * __Sass/Less/SCSS support__ Works the same way. Place your dynamic CSS files
91
108
  in there (say, `app/css/screen.sass`) and they will be available as CSS files
92
109
  (`http://localhost:4567/css/screen.css`).
93
110
 
94
- * __Cache busting__: the `css` and `js` helpers automatically ensures the URL
111
+ * __Cache busting__ the `css` and `js` helpers automatically ensures the URL
95
112
  is based on when the file was last modified. The URL `/js/jquery.js` may be
96
113
  translated to `/js/jquery.8237898.js` to ensure visitors always get the latest
97
114
  version.
98
115
 
99
- * __Images support__: Image filenames in your CSS will automatically get a
116
+ * __Images support__ Image filenames in your CSS will automatically get a
100
117
  cache-busting suffix (eg, `/images/icon.742958.png`).
101
118
 
102
- * __Embedded images support__: You can embed images in your CSS files as
119
+ * __Embedded images support__ You can embed images in your CSS files as
103
120
  `data:` URIs by simply adding `?embed` to the end of your URL.
104
121
 
105
- * __No intermediate files needed__: You don't need to generate compiled files.
122
+ * __No intermediate files needed__ You don't need to generate compiled files.
106
123
  You can, but it's optional. Keeps your source repo clean!
107
124
 
108
- * __Auto minification (with caching)__: JS and CSS files will be compressed as
125
+ * __Auto minification (with caching)__ JS and CSS files will be compressed as
109
126
  needed.
110
127
 
111
- * __Heroku support__: Oh yes. That's right.
128
+ * __Heroku support__ Oh yes. That's right.
112
129
 
113
130
  Compressors
114
131
  -----------
@@ -124,11 +141,11 @@ assets {
124
141
  }
125
142
  ```
126
143
 
127
-
128
- ----
129
-
130
144
  ### YUI Compressor
131
145
 
146
+ This uses Yahoo's Java-powered YUI compressor. For YUI compression, you need the
147
+ YUI compressor gem (`gem install yui-compressor`).
148
+
132
149
  ``` ruby
133
150
  assets {
134
151
  js_compression :yui
@@ -138,30 +155,23 @@ assets {
138
155
  }
139
156
  ```
140
157
 
141
- For YUI compression, you need the YUI compressor gem.
142
-
143
- * Bundler? Add to *Gemfile*: `gem 'yui-compressor', :require => 'yui/compressor'`
144
- * Else, `gem install yui-compressor`
145
-
146
- ----
147
-
148
158
  ### SASS compression
149
159
 
160
+ For SASS compression, you need the Sass gem (`gem install sass`). This treats
161
+ the CSS files as Scss files and uses Sass's `output: :compressed`.
162
+
150
163
  ``` ruby
151
164
  assets {
152
165
  css_compression :sass
153
166
  }
154
167
  ```
155
168
 
156
- For SASS compression, you need the Sass gem.
157
-
158
- * Bundler? Add to *Gemfile*: `gem 'sass'`
159
- * Else, `gem install sass`
160
-
161
- ----
162
-
163
169
  ### Sqwish CSS compression
164
170
 
171
+ [Sqwish](http://github.com/ded/sqwish) is a NodeJS-based CSS compressor. To use
172
+ Sqwish with AssetPack, install it using `npm install -g sqwish`. You need NodeJS
173
+ and NPM installed.
174
+
165
175
  ``` ruby
166
176
  assets {
167
177
  css_compression :sqwish
@@ -169,13 +179,15 @@ assets {
169
179
  }
170
180
  ```
171
181
 
172
- [Sqwish](http://github.com/ded/sqwish) is a NodeJS-based CSS compressor. To use
173
- Sqwish with AssetPack, install it using `npm install -g sqwish`. You need NodeJS
174
- and NPM installed.
182
+ ### Google Closure compression
175
183
 
176
- ----
184
+ This uses the [Google closure compiler
185
+ service](http://closure-compiler.appspot.com/home)
186
+ to compress your JavaScript. Available levels are:
177
187
 
178
- ### Google Closure compression
188
+ * `WHITESPACE_ONLY`
189
+ * `SIMPLE_OPTIMIZATIONS`
190
+ * `ADVANCED_OPTIMIZATIONS`
179
191
 
180
192
  ``` ruby
181
193
  assets {
@@ -184,11 +196,6 @@ assets {
184
196
  }
185
197
  ```
186
198
 
187
- This uses the [Google closure compiler service](http://closure-compiler.appspot.com/home)
188
- to compress your JavaScript.
189
-
190
- Available levels: `WHITESPACE_ONLY`, `SIMPLE_OPTIMIZATIONS`, `ADVANCED_OPTIMIZATIONS`
191
-
192
199
  Images
193
200
  ------
194
201
 
@@ -201,6 +208,7 @@ ImageMagick is required to generate full image tags with width and height.
201
208
  <!-- Output: --> <img src='/images/email.873842.png' width='16' height='16' />
202
209
  ```
203
210
 
211
+ #### URL translation
204
212
  In your CSS files, `url()`'s will automatically be translated.
205
213
 
206
214
  ``` css
@@ -208,6 +216,7 @@ In your CSS files, `url()`'s will automatically be translated.
208
216
  /* Output: */ .email { background: url(/images/email.6783478.png); }
209
217
  ```
210
218
 
219
+ #### Image embedding
211
220
  Want to embed images as `data:` URI's? Sure! Just add `?embed` at the end of the
212
221
  URL.
213
222
 
@@ -219,24 +228,26 @@ URL.
219
228
  Need to build the files?
220
229
  ------------------------
221
230
 
222
- Actually, you don't need to--this is optional! But add this to your Rakefile:
231
+ Actually, you don't need tothis is optional! But add this to your `Rakefile`:
223
232
 
224
233
  ``` ruby
234
+ # Rakefile
225
235
  APP_FILE = 'app.rb'
226
236
  APP_CLASS = 'App'
227
237
 
228
238
  require 'sinatra/assetpack/rake'
229
239
  ```
230
240
 
231
- Now:
241
+ #### Invoking
242
+ Now invoke the `assetpack:build` Rake task. This will create files in `/public`.
232
243
 
233
244
  $ rake assetpack:build
234
245
 
235
- This will create files in `/public`.
236
246
 
237
- API reference: assets block
238
- ---------------------------
247
+ API reference
248
+ -------------
239
249
 
250
+ #### Assets block
240
251
  All configuration happens in the `assets` block. You may invoke it in 2 ways:
241
252
 
242
253
  ``` ruby
@@ -257,68 +268,82 @@ class App < Sinatra::Base
257
268
  end
258
269
  ```
259
270
 
260
- Invoking it without a block allows you to access the options.
271
+ #### Getting options
272
+ Invoking it without a block allows you to access the options. This works for
273
+ almost all the options, with the exception for `css`, `js` and `serve`.
261
274
 
262
275
  ``` ruby
263
276
  App.assets
264
277
  App.assets.js_compression #=> :yui
265
278
  ```
266
279
 
267
- ----
268
-
269
280
  ### assets.serve
270
281
 
271
- __Usage:__ `serve 'PATH', :from => 'LOCALPATH'`
272
-
273
282
  Serves files from `LOCALPATH` in the URI path `PATH`. Both parameters are
274
283
  required.
275
284
 
276
285
  ``` ruby
277
- # ..This makes /app/javascripts/vendor/jquery.js
278
- # available as http://localhost:4567/js/vendor/jquery.js
279
- serve '/js', from: '/app/javascripts'
286
+ # Usage
287
+ serve 'PATH', :from => 'LOCALPATH'
280
288
  ```
281
289
 
282
- ----
290
+ #### Example
291
+ This makes `/app/javascripts/vendor/jquery.js`
292
+ available as `http://localhost:4567/js/vendor/jquery.js`.
283
293
 
284
- ### assets.js_compression
285
- ### assets.css_compression
294
+ ``` ruby
295
+ serve '/js', from: '/app/javascripts'
296
+ ```
286
297
 
287
- __Usage:__ `js_compression :ENGINE`
288
- __Usage:__ `js_compression :ENGINE, OPTIONS_HASH`
289
- __Usage:__ `css_compression :ENGINE`
290
- __Usage:__ `css_compression :ENGINE, OPTIONS_HASH`
298
+ ### assets.js\_compression<br>assets.css\_compression
291
299
 
292
300
  Sets the compression engine to use for JavaScript or CSS. This defaults to
293
301
  `:jsmin` and `:simple`, respectively.
294
302
 
295
303
  If `OPTIONS_HASH` is given as a hash, it sets options for the engine to use.
296
304
 
297
- __Example 1:__ `css_compression :sqwish`
298
- __Example 2:__ `css_compression :sqwish, :strict => true`
305
+ ``` ruby
306
+ # Usage:
307
+ assets {
308
+ js_compression :ENGINE
309
+ js_compression :ENGINE, OPTIONS_HASH
310
+ css_compression :ENGINE
311
+ css_compression :ENGINE, OPTIONS_HASH
312
+ }
313
+ ```
299
314
 
300
- ----
315
+ #### Examples
316
+ Yo seriously check this out: the first line uses Sqwish with it's defaults, and
317
+ the second line uses Sqwish with it's magic.
301
318
 
302
- ### assets.js_compression_options
303
- ### assets.css_compression_options
319
+ ``` ruby
320
+ assets {
321
+ css_compression :sqwish
322
+ css_compression :sqwish, :strict => true
323
+ }
324
+ ```
304
325
 
305
- __Usage:__ `js_compression_options HASH`
306
- __Usage:__ `css_compression_options HASH`
326
+ ### assets.js\_compression\_options<br>assets.css\_compression\_options
307
327
 
308
328
  Sets the options for the compression engine to use. This is usually not needed
309
329
  as you can already set options using `js_compression` and `css_compression`.
310
330
 
311
- __Example:__ `js_compression_options :munge => true`
331
+ ``` ruby
332
+ # Usage:
333
+ assets {
334
+ js_compression_options HASH
335
+ css_compression_options HASH
336
+ }
337
+ ```
312
338
 
313
- ----
339
+ #### Example
340
+ This sets the option for `:munge` for the CSS compression engine.
314
341
 
315
- ### assets.css
316
- ### assets.js
342
+ ``` ruby
343
+ css_compression_options :munge => true
344
+ ```
317
345
 
318
- __Usage:__ `css :NAME, [ PATH1, PATH2, ... ]`
319
- __Usage:__ `css :NAME, 'URI', [ PATH1, PATH2, ... ]`
320
- __Usage:__ `js :NAME, [ PATH1, PATH2, ... ]`
321
- __Usage:__ `js :NAME, 'URI', [ PATH1, PATH2, ... ]`
346
+ ### assets.css<br>assets.js
322
347
 
323
348
  Adds packages to be used.
324
349
 
@@ -326,18 +351,27 @@ The `NAME` is a symbol defines the ID for that given package that you can use
326
351
  for the helpers. That is, If a CSS package was defined as `css :main, [ ... ]`,
327
352
  then you will need to use `<%= css :main %>` to render it in views.
328
353
 
329
- the `URI` is a string that defines where the compressed version will be served.
330
- It is optional. If not provided, it will default to `"/type/name.type"` (eg:
331
- `/css/main.css`).
354
+ the `URI` is a string that defines where the compressed version will be served.
355
+ It is optional. If not provided, it will default to `"/assets/name.type"` (eg:
356
+ `/assets/main.css`).
332
357
 
333
358
  the `PATHs` is an array that defines files that will be served. Take note that
334
359
  this is an array of URI paths, not local paths.
335
360
 
336
- If a `PATH` contains wildcards, it will be expanded in alphabetical order.
361
+ If a `PATH` contains wildcards, it will be expanded in alphabetical order.
337
362
  Redundancies will be taken care of.
338
363
 
339
- __Examples:__
364
+ ``` ruby
365
+ # Usage:
366
+ assets {
367
+ css :NAME, [ PATH1, PATH2, ... ]
368
+ css :NAME, 'URI', [ PATH1, PATH2, ... ]
369
+ js:NAME, [ PATH1, PATH2, ... ]
370
+ js:NAME, 'URI', [ PATH1, PATH2, ... ]
371
+ }
372
+ ```
340
373
 
374
+ #### Example
341
375
  In this example, JavaScript files will be served compressed as
342
376
  `/js/application.js` (default since no `URI` is given). The files will be taken
343
377
  from `./app/javascripts/vendor/jquery*.js`.
@@ -361,61 +395,100 @@ API reference: helpers
361
395
 
362
396
  These are helpers you can use in your views.
363
397
 
364
- ----
365
-
366
- ### css
367
-
368
- __Usage:__ `css :PACKAGE`
369
- __Usage:__ `css :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH`
370
- __Usage:__ `css :PACKAGE, OPTIONS_HASH`
398
+ ### <%= css %>
371
399
 
372
400
  Shows a CSS package named `PACKAGE`. If `OPTIONS_HASH` is given, they will we
373
401
  passed onto the `<link>` tag to be generated as attributes.
374
402
 
375
403
  You may specify as many packages as you need, as shown in the second usage line.
376
404
 
377
- __Example 1:__ `css :main, media: 'screen'`
378
- __Output:__ `<link rel='stylesheet' type='text/css' href='/css/main.873984.css'
379
- media='screen' />`
405
+ ``` ruby
406
+ # Usage:
407
+ <%= css :PACKAGE %>
408
+ <%= css :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH %>
409
+ <%= css :PACKAGE, OPTIONS_HASH %>
410
+ ```
380
411
 
381
- __Example 2:__ `css :base, :app, :main, media: 'screen'`
412
+ #### Example 1
413
+ This links to the `main` stylesheet for *screen* media.
382
414
 
383
- ----
415
+ ``` erb
416
+ <%= css :main, media: 'screen' %>
384
417
 
385
- ### js
418
+ <!-- Output: -->
419
+ <link rel='stylesheet' type='text/css' href='/css/main.873984.css' media='screen' />
420
+ ```
386
421
 
387
- __Usage:__ `js :PACKAGE`
388
- __Usage:__ `js :PACKAGE, OPTIONS_HASH`
422
+ #### Example 2
423
+ You may also invoke it with multiple packages.
389
424
 
390
- Same as `css`, but obviously for JavaScript.
425
+ ``` erb
426
+ <%= css :base, :app, :main, media: 'screen' %>
391
427
 
392
- You may also specify as many packages as you need.
428
+ <!-- Output: -->
429
+ <link rel='stylesheet' type='text/css' href='/css/base.873984.css' media='screen' />
430
+ <link rel='stylesheet' type='text/css' href='/css/app.873984.css' media='screen' />
431
+ <link rel='stylesheet' type='text/css' href='/css/main.873984.css' media='screen' />
432
+ ```
393
433
 
394
- __Example:__ `js :main, id: 'main_script'`
395
- __Output:__ `<script type='text/javascript' src='/js/main.783439.js' id='main_script'></script>`
434
+ ### <%= js %>
396
435
 
397
- ----
436
+ Same as `css`, but obviously for JavaScript. You may also specify as many packages as you need, just with `css`.
398
437
 
399
- ### img
438
+ ``` erb
439
+ # Usage:
440
+ <%= js :PACKAGE %>
441
+ <%= js :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH %>
442
+ <%= js :PACKAGE, OPTIONS_HASH %>
443
+ ```
444
+
445
+ #### Example
446
+ This example embeds the *main* package with an ID.
400
447
 
401
- __Usage:__ `img 'SRC'`
402
- __Usage:__ `img 'SRC', OPTIONS_HASH`
448
+ ``` erb
449
+ <%= js :main, id: 'main_script' %>
450
+
451
+ <!-- Output: -->
452
+ <script type='text/javascript' src='/js/main.783439.js' id='main_script'></script>
453
+ ```
454
+
455
+ ### <%= img %>
403
456
 
404
457
  Shows an `<img>` tag from the given `SRC`. If the images is found in the asset
405
- directories (and ImageMagick is available), `width` and `height` attributes
406
- will be added.
458
+ directories (and ImageMagick is available), `width` and `height` attributes will
459
+ be added.
460
+
461
+ ``` ruby
462
+ # Usage:
463
+ img 'SRC'
464
+ img 'SRC', OPTIONS_HASH
465
+ ```
407
466
 
408
467
  If `OPTIONS_HASH` is given, they will we passed onto the `<img>` tag to be
409
468
  generated as attributes.
410
469
 
411
- __Example:__ `img '/images/icon.png', alt: 'Icon'`
412
- __Output:__ `<img src='/images/icon.834782.png' width='24' height='24' alt='Icon' />`
470
+ #### Example
471
+ This example renders an image with an alt tag.
472
+
473
+ ``` erb
474
+ <%= img '/images/icon.png', alt: 'Icon' %>
475
+
476
+ <!-- Output: -->
477
+ <img src='/images/icon.834782.png' width='24' height='24' alt='Icon' />`
478
+ ```
413
479
 
414
480
  Need Compass support?
415
481
  ---------------------
416
482
 
417
- No, AssetPack doesn't have built-in Compass support, but you can use [Sinatra
418
- Support](http://sinefunc.com/sinatra-support):
483
+ No, AssetPack doesn't have built-in [Compass](http://compass-style.org) support,
484
+ but you can use [Sinatra Support](http://sinefunc.com/sinatra-support).
485
+
486
+ For an example of how to use AssetPack with Compass, including on how to use it
487
+ to generate image [sprites][compsprite], see the [Compass example
488
+ application.][compex]
489
+
490
+ [compex]: https://github.com/rstacruz/sinatra-assetpack/tree/master/examples/compass
491
+ [compsprite]: http://compass-style.org/reference/compass/utilities/sprites/
419
492
 
420
493
  ``` ruby
421
494
  # gem install sinatra/support
@@ -439,3 +512,21 @@ AssetPack will eventually have:
439
512
  * Refactor *Compressor* module
440
513
  * CDN (Cloudfront, S3) support
441
514
  * Better support for Compass sprites
515
+
516
+ Acknowledgements
517
+ ----------------
518
+
519
+ © 2011, Rico Sta. Cruz. Released under the [MIT
520
+ License](http://www.opensource.org/licenses/mit-license.php).
521
+
522
+ Sinatra-AssetPack is authored and maintained by [Rico Sta. Cruz][rsc] with help
523
+ from it's [contributors][c]. It is sponsored by my startup, [Sinefunc, Inc][sf].
524
+
525
+ * [My website](http://ricostacruz.com) (ricostacruz.com)
526
+ * [Sinefunc, Inc.](http://sinefunc.com) (sinefunc.com)
527
+ * [Github](http://github.com/rstacruz) (@rstacruz)
528
+ * [Twitter](http://twitter.com/rstacruz) (@rstacruz)
529
+
530
+ [rsc]: http://ricostacruz.com
531
+ [c]: http://github.com/rstacruz/sinatra-assetpack/contributors
532
+ [sf]: http://sinefunc.com