sprockets-helpers 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Appraisals +8 -0
- data/gemfiles/sprockets-2.5.gemfile +7 -0
- data/gemfiles/sprockets-2.6.gemfile +7 -0
- data/lib/sprockets/helpers.rb +36 -30
- data/lib/sprockets/helpers/base_path.rb +20 -16
- data/lib/sprockets/helpers/version.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/sprockets-helpers_spec.rb +90 -45
- metadata +6 -4
data/Appraisals
CHANGED
data/lib/sprockets/helpers.rb
CHANGED
@@ -11,24 +11,24 @@ module Sprockets
|
|
11
11
|
class << self
|
12
12
|
# Link to assets from a dedicated server.
|
13
13
|
attr_accessor :asset_host
|
14
|
-
|
14
|
+
|
15
15
|
# When true, the asset paths will return digest paths.
|
16
16
|
attr_accessor :digest
|
17
|
-
|
17
|
+
|
18
18
|
# Set the Sprockets environment to search for assets.
|
19
19
|
# This defaults to the context's #environment method.
|
20
20
|
attr_accessor :environment
|
21
|
-
|
21
|
+
|
22
22
|
# The manifest file used for lookup
|
23
23
|
attr_accessor :manifest
|
24
|
-
|
24
|
+
|
25
25
|
# The base URL the Sprocket environment is mapped to.
|
26
26
|
# This defaults to '/assets'.
|
27
27
|
def prefix
|
28
28
|
@prefix ||= '/assets'
|
29
29
|
end
|
30
30
|
attr_writer :prefix
|
31
|
-
|
31
|
+
|
32
32
|
# Customize the protocol when using asset hosts.
|
33
33
|
# If the value is :relative, A relative protocol ('//')
|
34
34
|
# will be used.
|
@@ -36,7 +36,7 @@ module Sprockets
|
|
36
36
|
@protocol ||= 'http://'
|
37
37
|
end
|
38
38
|
attr_writer :protocol
|
39
|
-
|
39
|
+
|
40
40
|
# The path to the public directory, where the assets
|
41
41
|
# not managed by Sprockets will be located.
|
42
42
|
# Defaults to './public'
|
@@ -44,13 +44,15 @@ module Sprockets
|
|
44
44
|
@public_path ||= './public'
|
45
45
|
end
|
46
46
|
attr_writer :public_path
|
47
|
-
|
47
|
+
|
48
48
|
# Convience method for configuring Sprockets::Helpers.
|
49
49
|
def configure
|
50
50
|
yield self
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
end
|
54
|
+
|
55
|
+
class Context
|
54
56
|
# Returns the path to an asset either in the Sprockets environment
|
55
57
|
# or the public directory. External URIs are untouched.
|
56
58
|
#
|
@@ -79,35 +81,43 @@ module Sprockets
|
|
79
81
|
# asset_path '/dir/xmlhr.js', :dir => 'javascripts' # => '/dir/xmlhr.js'
|
80
82
|
# asset_path 'http://www.example.com/js/xmlhr' # => 'http://www.example.com/js/xmlhr'
|
81
83
|
# asset_path 'http://www.example.com/js/xmlhr.js' # => 'http://www.example.com/js/xmlhr.js'
|
82
|
-
#
|
84
|
+
#
|
83
85
|
def asset_path(source, options = {})
|
84
86
|
uri = URI.parse(source)
|
85
|
-
|
87
|
+
|
86
88
|
# Return fast if the URI is absolute
|
87
89
|
return source if uri.absolute?
|
88
|
-
|
90
|
+
|
91
|
+
# When debugging return paths without digests, asset_hosts, etc.
|
92
|
+
if options[:debug]
|
93
|
+
options[:manifest] = false
|
94
|
+
options[:digest] = false
|
95
|
+
options[:asset_host] = false
|
96
|
+
end
|
97
|
+
|
89
98
|
# Append extension if necessary
|
90
99
|
source_ext = File.extname(source)
|
91
100
|
if options[:ext] && source_ext != ".#{options[:ext]}"
|
92
101
|
uri.path << ".#{options[:ext]}"
|
93
102
|
end
|
94
|
-
|
103
|
+
|
95
104
|
# If a manifest is present, try to grab the path from the manifest first
|
96
|
-
|
97
|
-
|
105
|
+
# Don't try looking in manifest in the first place if we're not looking for digest version
|
106
|
+
if options[:manifest] != false && Helpers.manifest && Helpers.manifest.assets[uri.path]
|
107
|
+
return Helpers::ManifestPath.new(uri, Helpers.manifest.assets[uri.path], options).to_s
|
98
108
|
end
|
99
|
-
|
109
|
+
|
100
110
|
# If the source points to an asset in the Sprockets
|
101
111
|
# environment use AssetPath to generate the full path.
|
102
112
|
assets_environment.resolve(uri.path) do |path|
|
103
|
-
return AssetPath.new(uri, assets_environment[path], options).to_s
|
113
|
+
return Helpers::AssetPath.new(uri, assets_environment[path], options).to_s
|
104
114
|
end
|
105
|
-
|
115
|
+
|
106
116
|
# Use FilePath for normal files on the file system
|
107
|
-
FilePath.new(uri, options).to_s
|
117
|
+
return Helpers::FilePath.new(uri, options).to_s
|
108
118
|
end
|
109
119
|
alias_method :path_to_asset, :asset_path
|
110
|
-
|
120
|
+
|
111
121
|
# Computes the path to a audio asset either in the Sprockets environment
|
112
122
|
# or the public directory. External URIs are untouched.
|
113
123
|
#
|
@@ -131,7 +141,7 @@ module Sprockets
|
|
131
141
|
asset_path source, { :dir => 'audios' }.merge(options)
|
132
142
|
end
|
133
143
|
alias_method :path_to_audio, :audio_path
|
134
|
-
|
144
|
+
|
135
145
|
# Computes the path to a font asset either in the Sprockets environment
|
136
146
|
# or the public directory. External URIs are untouched.
|
137
147
|
#
|
@@ -155,7 +165,7 @@ module Sprockets
|
|
155
165
|
asset_path source, { :dir => 'fonts' }.merge(options)
|
156
166
|
end
|
157
167
|
alias_method :path_to_font, :font_path
|
158
|
-
|
168
|
+
|
159
169
|
# Computes the path to an image asset either in the Sprockets environment
|
160
170
|
# or the public directory. External URIs are untouched.
|
161
171
|
#
|
@@ -179,7 +189,7 @@ module Sprockets
|
|
179
189
|
asset_path source, { :dir => 'images' }.merge(options)
|
180
190
|
end
|
181
191
|
alias_method :path_to_image, :image_path
|
182
|
-
|
192
|
+
|
183
193
|
# Computes the path to a javascript asset either in the Sprockets
|
184
194
|
# environment or the public directory. If the +source+ filename has no extension,
|
185
195
|
# <tt>.js</tt> will be appended. External URIs are untouched.
|
@@ -204,7 +214,7 @@ module Sprockets
|
|
204
214
|
asset_path source, { :dir => 'javascripts', :ext => 'js' }.merge(options)
|
205
215
|
end
|
206
216
|
alias_method :path_to_javascript, :javascript_path
|
207
|
-
|
217
|
+
|
208
218
|
# Computes the path to a stylesheet asset either in the Sprockets
|
209
219
|
# environment or the public directory. If the +source+ filename has no extension,
|
210
220
|
# <tt>.css</tt> will be appended. External URIs are untouched.
|
@@ -229,7 +239,7 @@ module Sprockets
|
|
229
239
|
asset_path source, { :dir => 'stylesheets', :ext => 'css' }.merge(options)
|
230
240
|
end
|
231
241
|
alias_method :path_to_stylesheet, :stylesheet_path
|
232
|
-
|
242
|
+
|
233
243
|
# Computes the path to a video asset either in the Sprockets environment
|
234
244
|
# or the public directory. External URIs are untouched.
|
235
245
|
#
|
@@ -253,9 +263,9 @@ module Sprockets
|
|
253
263
|
asset_path source, { :dir => 'videos' }.merge(options)
|
254
264
|
end
|
255
265
|
alias_method :path_to_video, :video_path
|
256
|
-
|
266
|
+
|
257
267
|
protected
|
258
|
-
|
268
|
+
|
259
269
|
# Returns the Sprockets environment #asset_path uses to search for
|
260
270
|
# assets. This can be overridden for more control, if necessary.
|
261
271
|
# Defaults to Sprockets::Helpers.environment or the envrionment
|
@@ -264,8 +274,4 @@ module Sprockets
|
|
264
274
|
Helpers.environment || environment
|
265
275
|
end
|
266
276
|
end
|
267
|
-
|
268
|
-
class Context
|
269
|
-
include Helpers
|
270
|
-
end
|
271
277
|
end
|
@@ -3,40 +3,40 @@ require 'zlib'
|
|
3
3
|
|
4
4
|
module Sprockets
|
5
5
|
module Helpers
|
6
|
-
#
|
6
|
+
#
|
7
7
|
class BasePath
|
8
8
|
# The parsed URI from which to generate the full path to the asset.
|
9
9
|
attr_reader :uri
|
10
|
-
|
10
|
+
|
11
11
|
# The various options used when generating the path.
|
12
12
|
attr_reader :options
|
13
|
-
|
13
|
+
|
14
14
|
#
|
15
15
|
def initialize(uri, options = {})
|
16
16
|
@uri = uri
|
17
17
|
@options = options
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
# Returns the full path to the asset, complete with
|
21
21
|
# timestamp.
|
22
22
|
def to_s
|
23
23
|
rewrite_path
|
24
24
|
rewrite_query
|
25
25
|
rewrite_host
|
26
|
-
|
26
|
+
|
27
27
|
uri.to_s
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
protected
|
31
|
-
|
31
|
+
|
32
32
|
# Hook for rewriting the base path.
|
33
33
|
def rewrite_path # :nodoc:
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
# Hook for rewriting the query string.
|
37
37
|
def rewrite_query # :nodoc:
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
# Hook for rewriting the host.
|
41
41
|
def rewrite_host # :nodoc:
|
42
42
|
if host = compute_asset_host
|
@@ -44,36 +44,40 @@ module Sprockets
|
|
44
44
|
uri.scheme = compute_scheme
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# Pick an asset host for this source. Returns +nil+ if no host is set,
|
49
49
|
# the host if no wildcard is set, the host interpolated with the
|
50
50
|
# numbers 0-3 if it contains <tt>%d</tt> (the number is the source hash mod 4),
|
51
51
|
# or the value returned from invoking call on an object responding to call
|
52
52
|
# (proc or otherwise).
|
53
53
|
def compute_asset_host # :nodoc:
|
54
|
+
return nil if options[:asset_host] == false
|
55
|
+
|
54
56
|
if host = options[:asset_host] || Helpers.asset_host
|
55
57
|
if host.respond_to?(:call)
|
56
58
|
host.call(uri.to_s)
|
57
59
|
elsif host =~ /%d/
|
58
60
|
host % (Zlib.crc32(uri.to_s) % 4)
|
61
|
+
elsif host.empty?
|
62
|
+
nil
|
59
63
|
else
|
60
64
|
host
|
61
65
|
end
|
62
66
|
end
|
63
67
|
end
|
64
|
-
|
68
|
+
|
65
69
|
# Pick a scheme for the protocol if we are using
|
66
70
|
# an asset host.
|
67
71
|
def compute_scheme # :nodoc:
|
68
72
|
protocol = options[:protocol] || Helpers.protocol
|
69
|
-
|
73
|
+
|
70
74
|
if protocol.nil? || protocol == :relative
|
71
75
|
nil
|
72
76
|
else
|
73
77
|
protocol.to_s.sub %r{://\z}, ''
|
74
78
|
end
|
75
79
|
end
|
76
|
-
|
80
|
+
|
77
81
|
# Prepends the given path. If the path is absolute
|
78
82
|
# An attempt to merge the URIs is made.
|
79
83
|
#
|
@@ -81,16 +85,16 @@ module Sprockets
|
|
81
85
|
def prepend_path(value) # :nodoc:
|
82
86
|
prefix_uri = URI.parse(value)
|
83
87
|
uri.path = File.join prefix_uri.path, uri.path
|
84
|
-
|
88
|
+
|
85
89
|
if prefix_uri.absolute?
|
86
90
|
@uri = prefix_uri.merge(uri)
|
87
91
|
end
|
88
92
|
end
|
89
|
-
|
93
|
+
|
90
94
|
# Append the given query string to the URI
|
91
95
|
# instead of clobbering it.
|
92
96
|
def append_query(value) # :nodoc:
|
93
|
-
if uri.query.nil? || uri.query.empty?
|
97
|
+
if uri.query.nil? || uri.query.empty?
|
94
98
|
uri.query = value
|
95
99
|
else
|
96
100
|
uri.query << ('&' + value)
|
data/spec/spec_helper.rb
CHANGED
@@ -9,7 +9,7 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
9
9
|
|
10
10
|
RSpec.configure do |config|
|
11
11
|
config.include Construct::Helpers
|
12
|
-
|
12
|
+
|
13
13
|
# Returns a Sprockets environment. Automatically
|
14
14
|
# appends the 'assets' path if available.
|
15
15
|
def env
|
@@ -17,7 +17,7 @@ RSpec.configure do |config|
|
|
17
17
|
env.append_path 'assets' if File.directory?('assets')
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# Returns a fresh context, that can be used to test helpers.
|
22
22
|
def context(logical_path = 'application.js', pathname = nil)
|
23
23
|
pathname ||= Pathname.new(File.join('assets', logical_path)).expand_path
|
@@ -5,7 +5,7 @@ describe Sprockets::Helpers do
|
|
5
5
|
it 'sets global configuration' do
|
6
6
|
within_construct do |c|
|
7
7
|
c.file 'assets/main.css'
|
8
|
-
|
8
|
+
|
9
9
|
context.asset_path('main.css').should == '/assets/main.css'
|
10
10
|
Sprockets::Helpers.configure do |config|
|
11
11
|
config.digest = true
|
@@ -17,12 +17,12 @@ describe Sprockets::Helpers do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
describe '.digest' do
|
22
22
|
it 'globally configures digest paths' do
|
23
23
|
within_construct do |c|
|
24
24
|
c.file 'assets/main.js'
|
25
|
-
|
25
|
+
|
26
26
|
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
|
27
27
|
Sprockets::Helpers.digest = true
|
28
28
|
context.asset_path('main', :ext => 'js').should =~ %r(/assets/main-[0-9a-f]+.js)
|
@@ -30,12 +30,12 @@ describe Sprockets::Helpers do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
describe '.environment' do
|
35
35
|
it 'sets a custom assets environment' do
|
36
36
|
within_construct do |c|
|
37
37
|
c.file 'themes/main.css'
|
38
|
-
|
38
|
+
|
39
39
|
custom_env = Sprockets::Environment.new
|
40
40
|
custom_env.append_path 'themes'
|
41
41
|
Sprockets::Helpers.environment = custom_env
|
@@ -44,27 +44,27 @@ describe Sprockets::Helpers do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
describe '.asset_host' do
|
49
49
|
context 'that is a string' do
|
50
50
|
it 'prepends the asset_host' do
|
51
51
|
within_construct do |c|
|
52
52
|
c.file 'assets/main.js'
|
53
53
|
c.file 'public/logo.jpg'
|
54
|
-
|
54
|
+
|
55
55
|
Sprockets::Helpers.asset_host = 'assets.example.com'
|
56
56
|
context.asset_path('main.js').should == 'http://assets.example.com/assets/main.js'
|
57
57
|
context.asset_path('logo.jpg').should =~ %r(http://assets.example.com/logo.jpg\?\d+)
|
58
58
|
Sprockets::Helpers.asset_host = nil
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
context 'with a wildcard' do
|
63
63
|
it 'cycles asset_host between 0-3' do
|
64
64
|
within_construct do |c|
|
65
65
|
c.file 'assets/main.css'
|
66
66
|
c.file 'public/logo.jpg'
|
67
|
-
|
67
|
+
|
68
68
|
Sprockets::Helpers.asset_host = 'assets%d.example.com'
|
69
69
|
context.asset_path('main.css').should =~ %r(http://assets[0-3].example.com/assets/main.css)
|
70
70
|
context.asset_path('logo.jpg').should =~ %r(http://assets[0-3].example.com/logo.jpg\?\d+)
|
@@ -73,13 +73,13 @@ describe Sprockets::Helpers do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
context 'that is a proc' do
|
78
78
|
it 'prepends the returned asset_host' do
|
79
79
|
within_construct do |c|
|
80
80
|
c.file 'assets/main.js'
|
81
81
|
c.file 'public/logo.jpg'
|
82
|
-
|
82
|
+
|
83
83
|
Sprockets::Helpers.asset_host = Proc.new { |source| File.basename(source, File.extname(source)) + '.assets.example.com' }
|
84
84
|
context.asset_path('main.js').should == 'http://main.assets.example.com/assets/main.js'
|
85
85
|
context.asset_path('logo.jpg').should =~ %r(http://logo.assets.example.com/logo.jpg\?\d+)
|
@@ -88,12 +88,12 @@ describe Sprockets::Helpers do
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
describe '.prefix' do
|
93
93
|
it 'sets a custom assets prefix' do
|
94
94
|
within_construct do |c|
|
95
95
|
c.file 'assets/logo.jpg'
|
96
|
-
|
96
|
+
|
97
97
|
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
|
98
98
|
Sprockets::Helpers.prefix = '/images'
|
99
99
|
context.asset_path('logo.jpg').should == '/images/logo.jpg'
|
@@ -101,13 +101,13 @@ describe Sprockets::Helpers do
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
describe '.protocol' do
|
106
106
|
it 'sets the protocol to use with asset_hosts' do
|
107
107
|
within_construct do |c|
|
108
108
|
c.file 'assets/main.js'
|
109
109
|
c.file 'public/logo.jpg'
|
110
|
-
|
110
|
+
|
111
111
|
Sprockets::Helpers.asset_host = 'assets.example.com'
|
112
112
|
Sprockets::Helpers.protocol = 'https'
|
113
113
|
context.asset_path('main.js').should == 'https://assets.example.com/assets/main.js'
|
@@ -116,13 +116,13 @@ describe Sprockets::Helpers do
|
|
116
116
|
Sprockets::Helpers.protocol = nil
|
117
117
|
end
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
context 'that is :relative' do
|
121
121
|
it 'sets a relative protocol' do
|
122
122
|
within_construct do |c|
|
123
123
|
c.file 'assets/main.js'
|
124
124
|
c.file 'public/logo.jpg'
|
125
|
-
|
125
|
+
|
126
126
|
Sprockets::Helpers.asset_host = 'assets.example.com'
|
127
127
|
Sprockets::Helpers.protocol = :relative
|
128
128
|
context.asset_path('main.js').should == '//assets.example.com/assets/main.js'
|
@@ -133,12 +133,12 @@ describe Sprockets::Helpers do
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
end
|
136
|
-
|
136
|
+
|
137
137
|
describe '.public_path' do
|
138
138
|
it 'sets a custom location for the public path' do
|
139
139
|
within_construct do |c|
|
140
140
|
c.file 'output/main.js'
|
141
|
-
|
141
|
+
|
142
142
|
context.asset_path('main.js').should == '/main.js'
|
143
143
|
Sprockets::Helpers.public_path = './output'
|
144
144
|
context.asset_path('main.js').should =~ %r(/main.js\?\d+)
|
@@ -158,32 +158,32 @@ describe Sprockets::Helpers do
|
|
158
158
|
'//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
|
159
159
|
end
|
160
160
|
end
|
161
|
-
|
161
|
+
|
162
162
|
context 'with regular files' do
|
163
163
|
it 'returns absolute paths' do
|
164
164
|
context.asset_path('/path/to/file.js').should == '/path/to/file.js'
|
165
165
|
context.asset_path('/path/to/file.jpg').should == '/path/to/file.jpg'
|
166
166
|
context.asset_path('/path/to/file.eot?#iefix').should == '/path/to/file.eot?#iefix'
|
167
167
|
end
|
168
|
-
|
168
|
+
|
169
169
|
it 'appends the extension for javascripts and stylesheets' do
|
170
170
|
context.asset_path('/path/to/file', :ext => 'js').should == '/path/to/file.js'
|
171
171
|
context.asset_path('/path/to/file', :ext => 'css').should == '/path/to/file.css'
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
it 'prepends a base dir' do
|
175
175
|
context.asset_path('main', :dir => 'stylesheets', :ext => 'css').should == '/stylesheets/main.css'
|
176
176
|
context.asset_path('main', :dir => 'javascripts', :ext => 'js').should == '/javascripts/main.js'
|
177
177
|
context.asset_path('logo.jpg', :dir => 'images').should == '/images/logo.jpg'
|
178
178
|
end
|
179
|
-
|
179
|
+
|
180
180
|
it 'appends a timestamp if the file exists in the output path' do
|
181
181
|
within_construct do |c|
|
182
182
|
c.file 'public/main.js'
|
183
183
|
c.file 'public/favicon.ico'
|
184
184
|
c.file 'public/font.eot'
|
185
185
|
c.file 'public/font.svg'
|
186
|
-
|
186
|
+
|
187
187
|
context.asset_path('main', :ext => 'js').should =~ %r(/main.js\?\d+)
|
188
188
|
context.asset_path('/favicon.ico').should =~ %r(/favicon.ico\?\d+)
|
189
189
|
context.asset_path('font.eot?#iefix').should =~ %r(/font.eot\?\d+#iefix)
|
@@ -191,110 +191,155 @@ describe Sprockets::Helpers do
|
|
191
191
|
end
|
192
192
|
end
|
193
193
|
end
|
194
|
-
|
194
|
+
|
195
195
|
context 'with assets' do
|
196
196
|
it 'returns URLs to the assets' do
|
197
197
|
within_construct do |c|
|
198
198
|
c.file 'assets/logo.jpg'
|
199
199
|
c.file 'assets/main.js'
|
200
200
|
c.file 'assets/main.css'
|
201
|
-
|
201
|
+
|
202
202
|
context.asset_path('main', :ext => 'css').should == '/assets/main.css'
|
203
203
|
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
|
204
204
|
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
|
205
205
|
end
|
206
206
|
end
|
207
|
-
|
207
|
+
|
208
208
|
it 'prepends the assets prefix' do
|
209
209
|
within_construct do |c|
|
210
210
|
c.file 'assets/logo.jpg'
|
211
|
-
|
211
|
+
|
212
212
|
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
|
213
213
|
context.asset_path('logo.jpg', :prefix => '/images').should == '/images/logo.jpg'
|
214
214
|
end
|
215
215
|
end
|
216
|
-
|
216
|
+
|
217
217
|
it 'uses the digest path if configured' do
|
218
218
|
within_construct do |c|
|
219
219
|
c.file 'assets/main.js'
|
220
220
|
c.file 'assets/font.eot'
|
221
221
|
c.file 'assets/font.svg'
|
222
|
-
|
222
|
+
|
223
223
|
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
|
224
224
|
context.asset_path('main', :ext => 'js', :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js)
|
225
225
|
context.asset_path('font.eot?#iefix', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.eot\?#iefix)
|
226
226
|
context.asset_path('font.svg#FontName', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.svg#FontName)
|
227
227
|
end
|
228
228
|
end
|
229
|
-
|
229
|
+
|
230
230
|
it 'returns a body parameter' do
|
231
231
|
within_construct do |c|
|
232
232
|
c.file 'assets/main.js'
|
233
233
|
c.file 'assets/font.eot'
|
234
234
|
c.file 'assets/font.svg'
|
235
|
-
|
235
|
+
|
236
236
|
context.asset_path('main', :ext => 'js', :body => true).should == '/assets/main.js?body=1'
|
237
237
|
context.asset_path('font.eot?#iefix', :body => true).should == '/assets/font.eot?body=1#iefix'
|
238
238
|
context.asset_path('font.svg#FontName', :body => true).should == '/assets/font.svg?body=1#FontName'
|
239
239
|
end
|
240
240
|
end
|
241
241
|
end
|
242
|
-
|
242
|
+
|
243
|
+
context 'when debuging' do
|
244
|
+
it 'does not use the digest path' do
|
245
|
+
within_construct do |c|
|
246
|
+
c.file 'assets/main.js'
|
247
|
+
|
248
|
+
Sprockets::Helpers.digest = true
|
249
|
+
context.asset_path('main.js', :debug => true).should == '/assets/main.js'
|
250
|
+
Sprockets::Helpers.digest = nil
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
it 'does not prepend the asset host' do
|
255
|
+
within_construct do |c|
|
256
|
+
c.file 'assets/main.js'
|
257
|
+
|
258
|
+
Sprockets::Helpers.asset_host = 'assets.example.com'
|
259
|
+
context.asset_path('main.js', :debug => true).should == '/assets/main.js'
|
260
|
+
Sprockets::Helpers.asset_host = nil
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
243
265
|
if defined?(::Sprockets::Manifest)
|
244
266
|
context 'with a manifest' do
|
245
267
|
it 'reads path from a manifest file' do
|
246
268
|
within_construct do |c|
|
247
269
|
asset_file = c.file 'assets/application.js'
|
248
270
|
manifest_file = c.join 'manifest.json'
|
249
|
-
|
271
|
+
|
250
272
|
manifest = Sprockets::Manifest.new(env, manifest_file)
|
251
273
|
manifest.compile 'application.js'
|
252
|
-
|
274
|
+
|
253
275
|
Sprockets::Helpers.configure do |config|
|
254
276
|
config.digest = true
|
255
277
|
config.prefix = '/assets'
|
256
278
|
config.manifest = Sprockets::Manifest.new(env, manifest_file)
|
257
279
|
end
|
258
|
-
|
280
|
+
|
259
281
|
asset_file.delete
|
260
282
|
context.asset_path('application.js').should =~ %r(/assets/application-[0-9a-f]+.js)
|
261
|
-
|
283
|
+
|
262
284
|
Sprockets::Helpers.digest = nil
|
263
285
|
Sprockets::Helpers.prefix = nil
|
264
286
|
end
|
265
287
|
end
|
288
|
+
|
289
|
+
context 'when debuging' do
|
290
|
+
it 'does not read the path from the manifest file' do
|
291
|
+
within_construct do |c|
|
292
|
+
asset_file = c.file 'assets/application.js'
|
293
|
+
manifest_file = c.join 'manifest.json'
|
294
|
+
|
295
|
+
manifest = Sprockets::Manifest.new(env, manifest_file)
|
296
|
+
manifest.compile 'application.js'
|
297
|
+
|
298
|
+
Sprockets::Helpers.configure do |config|
|
299
|
+
config.digest = true
|
300
|
+
config.prefix = '/assets'
|
301
|
+
config.manifest = Sprockets::Manifest.new(env, manifest_file)
|
302
|
+
end
|
303
|
+
|
304
|
+
context.asset_path('application.js', :debug => true).should == '/assets/application.js'
|
305
|
+
|
306
|
+
Sprockets::Helpers.digest = nil
|
307
|
+
Sprockets::Helpers.prefix = nil
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
266
311
|
end
|
267
312
|
end
|
268
313
|
end
|
269
|
-
|
314
|
+
|
270
315
|
describe '#javascript_path' do
|
271
316
|
context 'with regular files' do
|
272
317
|
it 'appends the js extension' do
|
273
318
|
context.javascript_path('/path/to/file').should == '/path/to/file.js'
|
274
319
|
context.javascript_path('/path/to/file.min').should == '/path/to/file.min.js'
|
275
320
|
end
|
276
|
-
|
321
|
+
|
277
322
|
it 'prepends the javascripts dir' do
|
278
323
|
context.javascript_path('main').should == '/javascripts/main.js'
|
279
324
|
context.javascript_path('main.min').should == '/javascripts/main.min.js'
|
280
325
|
end
|
281
326
|
end
|
282
327
|
end
|
283
|
-
|
328
|
+
|
284
329
|
describe '#stylesheet_path' do
|
285
330
|
context 'with regular files' do
|
286
331
|
it 'appends the css extension' do
|
287
332
|
context.stylesheet_path('/path/to/file').should == '/path/to/file.css'
|
288
333
|
context.stylesheet_path('/path/to/file.min').should == '/path/to/file.min.css'
|
289
334
|
end
|
290
|
-
|
335
|
+
|
291
336
|
it 'prepends the stylesheets dir' do
|
292
337
|
context.stylesheet_path('main').should == '/stylesheets/main.css'
|
293
338
|
context.stylesheet_path('main.min').should == '/stylesheets/main.min.css'
|
294
339
|
end
|
295
340
|
end
|
296
341
|
end
|
297
|
-
|
342
|
+
|
298
343
|
describe '#image_path' do
|
299
344
|
context 'with regular files' do
|
300
345
|
it 'prepends the images dir' do
|
@@ -302,7 +347,7 @@ describe Sprockets::Helpers do
|
|
302
347
|
end
|
303
348
|
end
|
304
349
|
end
|
305
|
-
|
350
|
+
|
306
351
|
describe '#font_path' do
|
307
352
|
context 'with regular files' do
|
308
353
|
it 'prepends the fonts dir' do
|
@@ -310,7 +355,7 @@ describe Sprockets::Helpers do
|
|
310
355
|
end
|
311
356
|
end
|
312
357
|
end
|
313
|
-
|
358
|
+
|
314
359
|
describe '#video_path' do
|
315
360
|
context 'with regular files' do
|
316
361
|
it 'prepends the videos dir' do
|
@@ -318,7 +363,7 @@ describe Sprockets::Helpers do
|
|
318
363
|
end
|
319
364
|
end
|
320
365
|
end
|
321
|
-
|
366
|
+
|
322
367
|
describe '#audio_path' do
|
323
368
|
context 'with regular files' do
|
324
369
|
it 'prepends the audios dir' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
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-
|
12
|
+
date: 2012-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sprockets
|
@@ -109,6 +109,8 @@ files:
|
|
109
109
|
- gemfiles/sprockets-2.2.gemfile
|
110
110
|
- gemfiles/sprockets-2.3.gemfile
|
111
111
|
- gemfiles/sprockets-2.4.gemfile
|
112
|
+
- gemfiles/sprockets-2.5.gemfile
|
113
|
+
- gemfiles/sprockets-2.6.gemfile
|
112
114
|
- lib/sprockets-helpers.rb
|
113
115
|
- lib/sprockets/helpers.rb
|
114
116
|
- lib/sprockets/helpers/asset_path.rb
|
@@ -133,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
135
|
version: '0'
|
134
136
|
segments:
|
135
137
|
- 0
|
136
|
-
hash:
|
138
|
+
hash: 193858515
|
137
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
140
|
none: false
|
139
141
|
requirements:
|
@@ -142,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
144
|
version: '0'
|
143
145
|
segments:
|
144
146
|
- 0
|
145
|
-
hash:
|
147
|
+
hash: 193858515
|
146
148
|
requirements: []
|
147
149
|
rubyforge_project: sprockets-helpers
|
148
150
|
rubygems_version: 1.8.23
|