sinatra-assetpack 0.0.12.pre1 → 0.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.
- data/.travis.yml +8 -0
- data/HISTORY.md +13 -0
- data/README.md +5 -3
- data/lib/sinatra/assetpack/image.rb +2 -2
- data/lib/sinatra/assetpack/options.rb +10 -5
- data/lib/sinatra/assetpack/package.rb +6 -3
- data/lib/sinatra/assetpack/version.rb +1 -1
- data/sinatra-assetpack.gemspec +1 -0
- data/test/app/app/js/hello.2.js +1 -0
- data/test/unit_test.rb +9 -4
- metadata +134 -55
data/.travis.yml
ADDED
data/HISTORY.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
v0.1.0 - Jan 14, 2013
|
2
|
+
----------------------
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
* Using `file` utility instead `identify` utility. (#26)
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
* Deal with different encodings in combined assets. (#47)
|
9
|
+
* Serve files with dots in name. (#32, #66)
|
10
|
+
* Deal with character encoding issues in ruby 1.8. (#51)
|
11
|
+
* Add missing depedency for development unit test. (#63)
|
12
|
+
* Deal with binary files copy (ex. images), fix errors like `"\x89" from ASCII-8BIT to UTF-8"`. (#38, #67)
|
13
|
+
|
1
14
|
v0.0.11 - Feb 21, 2012
|
2
15
|
----------------------
|
3
16
|
|
data/README.md
CHANGED
@@ -9,11 +9,13 @@ render Sass or whatever. No-siree!
|
|
9
9
|
* JavaScript/CoffeeScript files in `/app/js`
|
10
10
|
* CSS/Sass/Less/CSS files in `/app/css`
|
11
11
|
* Images into `/app/images`
|
12
|
-
3. Add `register Sinatra::AssetPack` and set up options to your app (see below)
|
13
|
-
4. Use `<%= css :application %>` to your layouts. Use
|
14
|
-
messy *script* and *link* tags
|
12
|
+
3. Add `register Sinatra::AssetPack` and set up options to your app (see below).
|
13
|
+
4. Use `<%= js :app %>` and `<%= css :application %>` to your layouts. Use these instead of
|
14
|
+
messy *script* and *link* tags.
|
15
15
|
5. BOOM! You're in business baby!
|
16
16
|
|
17
|
+
[](https://travis-ci.org/rstacruz/sinatra-assetpack)
|
18
|
+
|
17
19
|
Installation
|
18
20
|
------------
|
19
21
|
|
@@ -30,8 +30,8 @@ module Sinatra
|
|
30
30
|
def dimensions
|
31
31
|
return @dimensions unless @dimensions.nil?
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
dim = /(\d+) x (\d+)/.match(`file "#{@file}"`)
|
34
|
+
w, h = dim[1,2]
|
35
35
|
|
36
36
|
if w.to_i != 0 && h.to_i != 0
|
37
37
|
@dimensions = [w.to_i, h.to_i]
|
@@ -170,7 +170,7 @@ module Sinatra
|
|
170
170
|
@css_compression_options = options if options.is_a?(Hash)
|
171
171
|
@css_compression
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
# =====================================================================
|
175
175
|
# Stuff
|
176
176
|
|
@@ -237,14 +237,19 @@ module Sinatra
|
|
237
237
|
# Returns the local file for a given URI path. (for dynamic files)
|
238
238
|
# Returns nil if a file is not found.
|
239
239
|
# TODO: consolidate with local_file_for
|
240
|
-
def dyn_local_file_for(
|
240
|
+
def dyn_local_file_for(requested_file, from)
|
241
241
|
# Remove extension
|
242
|
-
file =
|
242
|
+
file = requested_file
|
243
|
+
extension = ''
|
244
|
+
|
245
|
+
file.sub(/^(.*)(\.[^\.]+)$/) { file, extension = $1, $2 }
|
243
246
|
|
244
247
|
# Remove cache-buster (/js/app.28389.js => /js/app)
|
245
248
|
file = $1 if file =~ /^(.*)\.[0-9]+$/
|
246
249
|
|
247
|
-
Dir[File.join(app.root, from, "#{file}.*")]
|
250
|
+
matches = Dir[File.join(app.root, from, "#{file}.*")]
|
251
|
+
# Fix for filenames with dots (can't do this with glob)
|
252
|
+
matches.select { |f| f =~ /#{file}\.[^.]+$/ }.first
|
248
253
|
end
|
249
254
|
|
250
255
|
# Writes `public/#{path}` based on contents of `output`.
|
@@ -255,7 +260,7 @@ module Sinatra
|
|
255
260
|
yield path if block_given?
|
256
261
|
|
257
262
|
FileUtils.mkdir_p File.dirname(path)
|
258
|
-
File.open(path, '
|
263
|
+
File.open(path, 'wb') { |f| f.write output }
|
259
264
|
|
260
265
|
if mtime
|
261
266
|
File.utime mtime, mtime, path
|
@@ -96,9 +96,12 @@ module Sinatra
|
|
96
96
|
session = Rack::Test::Session.new(@assets.app)
|
97
97
|
paths.map { |path|
|
98
98
|
result = session.get(path)
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
if result.body.respond_to?(:force_encoding)
|
100
|
+
response_encoding = result.content_type.split(/;\s*charset\s*=\s*/).last.upcase rescue 'ASCII-8BIT'
|
101
|
+
result.body.force_encoding(response_encoding).encode(Encoding.default_external || 'ASCII-8BIT') if result.status == 200
|
102
|
+
else
|
103
|
+
result.body if result.status == 200
|
104
|
+
end
|
102
105
|
}.join("\n")
|
103
106
|
end
|
104
107
|
|
data/sinatra-assetpack.gemspec
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
$(function() { alert("Hello.2"); });
|
data/test/unit_test.rb
CHANGED
@@ -5,7 +5,7 @@ class AppTest < UnitTest
|
|
5
5
|
get '/js/hello.js'
|
6
6
|
assert body == '$(function() { alert("Hello"); });'
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
test '/js/hi.js (coffeescript)' do
|
10
10
|
get '/js/hi.js'
|
11
11
|
assert body.include? 'yo'
|
@@ -17,11 +17,16 @@ class AppTest < UnitTest
|
|
17
17
|
assert last_response.status == 404
|
18
18
|
end
|
19
19
|
|
20
|
-
test '/js/
|
20
|
+
test '/js/hello.2834987.js (with cache buster)' do
|
21
21
|
get '/js/hello.283947.js'
|
22
22
|
assert body == '$(function() { alert("Hello"); });'
|
23
23
|
end
|
24
24
|
|
25
|
+
test '/js/hello.2.2834987.js (with cache buster)' do
|
26
|
+
get '/js/hello.2.283947.js'
|
27
|
+
assert body == '$(function() { alert("Hello.2"); });'
|
28
|
+
end
|
29
|
+
|
25
30
|
test '/js/hi.2834987.js (coffeescript with cache buster)' do
|
26
31
|
get '/js/hi.283947.js'
|
27
32
|
assert last_response.status == 200
|
@@ -33,12 +38,12 @@ class AppTest < UnitTest
|
|
33
38
|
get '/js/hello.css'
|
34
39
|
assert last_response.status == 404
|
35
40
|
end
|
36
|
-
|
41
|
+
|
37
42
|
test 'matches only from the site root' do
|
38
43
|
get '/not-the-root/js/hello.js'
|
39
44
|
assert last_response.status == 404
|
40
45
|
end
|
41
|
-
|
46
|
+
|
42
47
|
test 'wrong extension for dynamic coffeescript file' do
|
43
48
|
get '/js/hi.css'
|
44
49
|
assert last_response.status == 404
|
metadata
CHANGED
@@ -1,148 +1,224 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-assetpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Rico Sta. Cruz
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
16
|
-
|
17
|
-
|
16
|
+
prerelease: false
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 1.3.0
|
22
|
+
none: false
|
22
23
|
type: :runtime
|
23
|
-
|
24
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ! '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 1.3.0
|
29
|
+
none: false
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: sinatra
|
27
|
-
|
28
|
-
|
32
|
+
prerelease: false
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
31
36
|
- !ruby/object:Gem::Version
|
32
37
|
version: '0'
|
38
|
+
none: false
|
33
39
|
type: :runtime
|
34
|
-
|
35
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
none: false
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: jsmin
|
38
|
-
|
39
|
-
|
48
|
+
prerelease: false
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: '0'
|
54
|
+
none: false
|
44
55
|
type: :runtime
|
45
|
-
|
46
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
none: false
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rack-test
|
49
|
-
|
50
|
-
|
64
|
+
prerelease: false
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
53
68
|
- !ruby/object:Gem::Version
|
54
69
|
version: '0'
|
70
|
+
none: false
|
55
71
|
type: :runtime
|
56
|
-
|
57
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
none: false
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: yui-compressor
|
60
|
-
|
61
|
-
|
80
|
+
prerelease: false
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
64
84
|
- !ruby/object:Gem::Version
|
65
85
|
version: '0'
|
86
|
+
none: false
|
66
87
|
type: :development
|
67
|
-
|
68
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
none: false
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: sass
|
71
|
-
|
72
|
-
|
96
|
+
prerelease: false
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
75
100
|
- !ruby/object:Gem::Version
|
76
101
|
version: '0'
|
102
|
+
none: false
|
77
103
|
type: :development
|
78
|
-
|
79
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
none: false
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: haml
|
82
|
-
|
83
|
-
|
112
|
+
prerelease: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
86
116
|
- !ruby/object:Gem::Version
|
87
117
|
version: '0'
|
118
|
+
none: false
|
88
119
|
type: :development
|
89
|
-
|
90
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
none: false
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: coffee-script
|
93
|
-
|
94
|
-
|
128
|
+
prerelease: false
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
97
132
|
- !ruby/object:Gem::Version
|
98
133
|
version: '0'
|
134
|
+
none: false
|
99
135
|
type: :development
|
100
|
-
|
101
|
-
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
none: false
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: contest
|
104
|
-
|
105
|
-
|
144
|
+
prerelease: false
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
108
148
|
- !ruby/object:Gem::Version
|
109
149
|
version: '0'
|
150
|
+
none: false
|
110
151
|
type: :development
|
111
|
-
|
112
|
-
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
none: false
|
113
158
|
- !ruby/object:Gem::Dependency
|
114
159
|
name: mocha
|
115
|
-
|
116
|
-
|
160
|
+
prerelease: false
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
requirements:
|
118
163
|
- - ! '>='
|
119
164
|
- !ruby/object:Gem::Version
|
120
165
|
version: '0'
|
166
|
+
none: false
|
121
167
|
type: :development
|
122
|
-
|
123
|
-
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
none: false
|
124
174
|
- !ruby/object:Gem::Dependency
|
125
175
|
name: stylus
|
126
|
-
|
127
|
-
|
176
|
+
prerelease: false
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
128
178
|
requirements:
|
129
179
|
- - ! '>='
|
130
180
|
- !ruby/object:Gem::Version
|
131
181
|
version: '0'
|
182
|
+
none: false
|
132
183
|
type: :development
|
133
|
-
|
134
|
-
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ! '>='
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
none: false
|
135
190
|
- !ruby/object:Gem::Dependency
|
136
191
|
name: uglifier
|
137
|
-
|
138
|
-
|
192
|
+
prerelease: false
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
139
194
|
requirements:
|
140
195
|
- - ! '>='
|
141
196
|
- !ruby/object:Gem::Version
|
142
197
|
version: '0'
|
198
|
+
none: false
|
143
199
|
type: :development
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
none: false
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: rake
|
144
208
|
prerelease: false
|
145
|
-
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
none: false
|
215
|
+
type: :development
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
requirements:
|
218
|
+
- - ! '>='
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '0'
|
221
|
+
none: false
|
146
222
|
description: Package your assets for Sinatra.
|
147
223
|
email:
|
148
224
|
- rico@sinefunc.com
|
@@ -151,6 +227,7 @@ extensions: []
|
|
151
227
|
extra_rdoc_files: []
|
152
228
|
files:
|
153
229
|
- .gitignore
|
230
|
+
- .travis.yml
|
154
231
|
- Gemfile
|
155
232
|
- HISTORY.md
|
156
233
|
- README.md
|
@@ -219,6 +296,7 @@ files:
|
|
219
296
|
- test/app/app/images/background.jpg
|
220
297
|
- test/app/app/images/email.png
|
221
298
|
- test/app/app/js/_ignoreme.js
|
299
|
+
- test/app/app/js/hello.2.js
|
222
300
|
- test/app/app/js/hello.js
|
223
301
|
- test/app/app/js/helloe.js
|
224
302
|
- test/app/app/js/hi.coffee
|
@@ -260,21 +338,22 @@ rdoc_options: []
|
|
260
338
|
require_paths:
|
261
339
|
- lib
|
262
340
|
required_ruby_version: !ruby/object:Gem::Requirement
|
263
|
-
none: false
|
264
341
|
requirements:
|
265
342
|
- - ! '>='
|
266
343
|
- !ruby/object:Gem::Version
|
267
344
|
version: '0'
|
268
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
345
|
none: false
|
346
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
270
347
|
requirements:
|
271
|
-
- - ! '
|
348
|
+
- - ! '>='
|
272
349
|
- !ruby/object:Gem::Version
|
273
|
-
version:
|
350
|
+
version: '0'
|
351
|
+
none: false
|
274
352
|
requirements: []
|
275
353
|
rubyforge_project:
|
276
|
-
rubygems_version: 1.8.
|
354
|
+
rubygems_version: 1.8.24
|
277
355
|
signing_key:
|
278
356
|
specification_version: 3
|
279
357
|
summary: Asset packager for Sinatra.
|
280
358
|
test_files: []
|
359
|
+
has_rdoc:
|