sinatra-assetpack 0.1.1 → 0.1.2
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.
- data/.gitignore +0 -1
- data/Gemfile.lock +79 -0
- data/HISTORY.md +6 -0
- data/README.md +26 -0
- data/lib/sinatra/assetpack/class_methods.rb +2 -1
- data/lib/sinatra/assetpack/helpers.rb +9 -0
- data/lib/sinatra/assetpack/options.rb +8 -0
- data/lib/sinatra/assetpack/version.rb +1 -1
- data/sinatra-assetpack.gemspec +1 -0
- data/test/app/app.rb +1 -0
- data/test/test_helper.rb +2 -1
- data/test/unit_test.rb +33 -0
- metadata +19 -2
data/.gitignore
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
sinatra-assetpack (0.1.1)
|
5
|
+
jsmin
|
6
|
+
rack-test
|
7
|
+
sinatra
|
8
|
+
tilt (>= 1.3.0)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
POpen4 (0.1.4)
|
14
|
+
Platform (>= 0.4.0)
|
15
|
+
open4
|
16
|
+
Platform (0.4.0)
|
17
|
+
coffee-script (2.2.0)
|
18
|
+
coffee-script-source
|
19
|
+
execjs
|
20
|
+
coffee-script-source (1.4.0)
|
21
|
+
columnize (0.3.6)
|
22
|
+
commonjs (0.2.6)
|
23
|
+
contest (0.1.3)
|
24
|
+
debugger (1.2.4)
|
25
|
+
columnize (>= 0.3.1)
|
26
|
+
debugger-linecache (~> 1.1.1)
|
27
|
+
debugger-ruby_core_source (~> 1.1.7)
|
28
|
+
debugger-linecache (1.1.2)
|
29
|
+
debugger-ruby_core_source (>= 1.1.1)
|
30
|
+
debugger-ruby_core_source (1.1.7)
|
31
|
+
execjs (1.4.0)
|
32
|
+
multi_json (~> 1.0)
|
33
|
+
haml (3.1.7)
|
34
|
+
jsmin (1.0.1)
|
35
|
+
less (2.2.2)
|
36
|
+
commonjs (~> 0.2.6)
|
37
|
+
metaclass (0.0.1)
|
38
|
+
mocha (0.13.1)
|
39
|
+
metaclass (~> 0.0.1)
|
40
|
+
multi_json (1.5.0)
|
41
|
+
open4 (1.3.0)
|
42
|
+
rack (1.4.4)
|
43
|
+
rack-protection (1.3.2)
|
44
|
+
rack
|
45
|
+
rack-test (0.6.2)
|
46
|
+
rack (>= 1.0)
|
47
|
+
rake (10.0.3)
|
48
|
+
sass (3.2.5)
|
49
|
+
sinatra (1.3.3)
|
50
|
+
rack (~> 1.3, >= 1.3.6)
|
51
|
+
rack-protection (~> 1.2)
|
52
|
+
tilt (~> 1.3, >= 1.3.3)
|
53
|
+
stylus (0.6.2)
|
54
|
+
execjs
|
55
|
+
stylus-source
|
56
|
+
stylus-source (0.31.0)
|
57
|
+
tilt (1.3.3)
|
58
|
+
uglifier (1.3.0)
|
59
|
+
execjs (>= 0.3.0)
|
60
|
+
multi_json (~> 1.0, >= 1.0.2)
|
61
|
+
yui-compressor (0.9.6)
|
62
|
+
POpen4 (>= 0.1.4)
|
63
|
+
|
64
|
+
PLATFORMS
|
65
|
+
ruby
|
66
|
+
|
67
|
+
DEPENDENCIES
|
68
|
+
coffee-script
|
69
|
+
contest
|
70
|
+
debugger
|
71
|
+
haml
|
72
|
+
less
|
73
|
+
mocha
|
74
|
+
rake
|
75
|
+
sass
|
76
|
+
sinatra-assetpack!
|
77
|
+
stylus
|
78
|
+
uglifier
|
79
|
+
yui-compressor
|
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -529,6 +529,32 @@ end
|
|
529
529
|
# >> Listening on 0.0.0.0:4567, CTRL+C to stop
|
530
530
|
```
|
531
531
|
|
532
|
+
### assets.expires
|
533
|
+
Sets cache control headers for all assets handled by AssetPack. Defaults to `expires 86400*30, :public`. Passes the arguments to [Sinatras #expires](http://rubydoc.info/gems/sinatra/Sinatra/Helpers#expires-instance_method).
|
534
|
+
|
535
|
+
``` ruby
|
536
|
+
# Usage:
|
537
|
+
expires amount, *values
|
538
|
+
```
|
539
|
+
|
540
|
+
#### Example
|
541
|
+
In this example all assets get cached for a year.
|
542
|
+
|
543
|
+
``` ruby
|
544
|
+
class App < Sinatra::Base
|
545
|
+
assets {
|
546
|
+
js_compression :closure
|
547
|
+
|
548
|
+
js :application, [
|
549
|
+
'/js/vendor/jquery.*.js',
|
550
|
+
'/js/vendor/jquery.js'
|
551
|
+
]
|
552
|
+
expires 86400*365, :public
|
553
|
+
}
|
554
|
+
end
|
555
|
+
```
|
556
|
+
|
557
|
+
|
532
558
|
API reference: helpers
|
533
559
|
----------------------
|
534
560
|
|
@@ -30,6 +30,7 @@ module Sinatra
|
|
30
30
|
|
31
31
|
content_type package.type
|
32
32
|
last_modified mtime
|
33
|
+
assets_expires
|
33
34
|
contents
|
34
35
|
end
|
35
36
|
end
|
@@ -50,7 +51,7 @@ module Sinatra
|
|
50
51
|
# Send headers
|
51
52
|
content_type fmt.to_sym
|
52
53
|
last_modified File.mtime(fn).to_i
|
53
|
-
|
54
|
+
assets_expires
|
54
55
|
|
55
56
|
format = File.extname(fn)[1..-1]
|
56
57
|
|
@@ -56,6 +56,15 @@ module Sinatra
|
|
56
56
|
def asset_path_for(file, from)
|
57
57
|
settings.assets.dyn_local_file_for file, from
|
58
58
|
end
|
59
|
+
|
60
|
+
def assets_expires
|
61
|
+
if settings.assets.expires.nil?
|
62
|
+
expires 86400*30, :public
|
63
|
+
else
|
64
|
+
expires *settings.assets.expires
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
59
68
|
end
|
60
69
|
end
|
61
70
|
end
|
@@ -159,6 +159,14 @@ module Sinatra
|
|
159
159
|
|
160
160
|
attrib :prebuild # Bool
|
161
161
|
|
162
|
+
def expires(*args)
|
163
|
+
if args.empty?
|
164
|
+
@expires
|
165
|
+
else
|
166
|
+
@expires = args
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
162
170
|
def js_compression(name=nil, options=nil)
|
163
171
|
@js_compression = name unless name.nil?
|
164
172
|
@js_compression_options = options if options.is_a?(Hash)
|
data/sinatra-assetpack.gemspec
CHANGED
data/test/app/app.rb
CHANGED
data/test/test_helper.rb
CHANGED
data/test/unit_test.rb
CHANGED
@@ -103,4 +103,37 @@ class AppTest < UnitTest
|
|
103
103
|
get '/helpers/css'
|
104
104
|
assert body =~ %r{link rel='stylesheet' href='/css/screen.[0-9]+.css' media='screen'}
|
105
105
|
end
|
106
|
+
|
107
|
+
test 'default expiration of single assets' do
|
108
|
+
get '/js/hi.js'
|
109
|
+
assert_equal "public, max-age=#{86400*30}", last_response.headers['Cache-Control']
|
110
|
+
assert_equal (Time.now + (86400*30)).httpdate, last_response.headers['Expires']
|
111
|
+
end
|
112
|
+
|
113
|
+
test 'custom expiration of single assets' do
|
114
|
+
app.settings.assets.expires 86400*365, :public
|
115
|
+
|
116
|
+
get '/js/hi.js'
|
117
|
+
assert_equal "public, max-age=#{86400*365}", last_response.headers['Cache-Control']
|
118
|
+
assert_equal (Time.now + (86400*365)).httpdate, last_response.headers['Expires']
|
119
|
+
|
120
|
+
app.settings.assets.instance_variable_set('@expires', nil)
|
121
|
+
end
|
122
|
+
|
123
|
+
test 'default expiration of packed assets' do
|
124
|
+
get '/js/app.js'
|
125
|
+
assert_equal "public, max-age=#{86400*30}", last_response.headers['Cache-Control']
|
126
|
+
assert_equal (Time.now + (86400*30)).httpdate, last_response.headers['Expires']
|
127
|
+
end
|
128
|
+
|
129
|
+
test 'custom expiration of single assets' do
|
130
|
+
app.settings.assets.expires 86400*365, :public
|
131
|
+
|
132
|
+
get '/js/app.js'
|
133
|
+
assert_equal "public, max-age=#{86400*365}", last_response.headers['Cache-Control']
|
134
|
+
assert_equal (Time.now + (86400*365)).httpdate, last_response.headers['Expires']
|
135
|
+
|
136
|
+
app.settings.assets.instance_variable_set('@expires', nil)
|
137
|
+
end
|
138
|
+
|
106
139
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-assetpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
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: 2013-01-
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
@@ -235,6 +235,22 @@ dependencies:
|
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
237
|
none: false
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
name: debugger
|
240
|
+
prerelease: false
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - ! '>='
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '0'
|
246
|
+
none: false
|
247
|
+
type: :development
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - ! '>='
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '0'
|
253
|
+
none: false
|
238
254
|
description: Package your assets for Sinatra.
|
239
255
|
email:
|
240
256
|
- rico@sinefunc.com
|
@@ -245,6 +261,7 @@ files:
|
|
245
261
|
- .gitignore
|
246
262
|
- .travis.yml
|
247
263
|
- Gemfile
|
264
|
+
- Gemfile.lock
|
248
265
|
- HISTORY.md
|
249
266
|
- README.md
|
250
267
|
- Rakefile
|