sprockets-helpers 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,34 +2,33 @@ module Sprockets
2
2
  module Helpers
3
3
  # `AssetPath` generates a full path for an asset
4
4
  # that exists in Sprockets environment.
5
- class AssetPath < FilePath
6
- #
7
- def initialize(asset, options = {})
5
+ class AssetPath < BasePath
6
+ def initialize(uri, asset, options = {})
7
+ @uri = uri
8
8
  @options = {
9
9
  :body => false,
10
10
  :digest => Helpers.digest,
11
11
  :prefix => Helpers.prefix
12
12
  }.merge options
13
13
 
14
- @source = @options[:digest] ? asset.digest_path : asset.logical_path
14
+ @uri.path = @options[:digest] ? asset.digest_path : asset.logical_path
15
15
  end
16
16
 
17
17
  protected
18
18
 
19
- # Prepends the assets prefix
20
- def rewrite_base_path(path) # :nodoc:
19
+ def rewrite_path
21
20
  prefix = if options[:prefix].respond_to? :call
22
- options[:prefix].call path
21
+ warn 'DEPRECATION WARNING: Using a Proc for Sprockets::Helpers.prefix is deprecated and will be removed in 1.0. Please use Sprockets::Helpers.asset_host instead.'
22
+ options[:prefix].call uri.path
23
23
  else
24
24
  options[:prefix].to_s
25
25
  end
26
-
27
- File.join prefix, path
26
+
27
+ prepend_path(prefix)
28
28
  end
29
29
 
30
- # Rewrite the query string to inlcude body flag if necessary.
31
- def rewrite_query(path)
32
- options[:body] ? "#{path}?body=1" : path
30
+ def rewrite_query
31
+ append_query('body=1') if options[:body]
33
32
  end
34
33
  end
35
34
  end
@@ -0,0 +1,101 @@
1
+ require 'uri'
2
+ require 'zlib'
3
+
4
+ module Sprockets
5
+ module Helpers
6
+ #
7
+ class BasePath
8
+ # The parsed URI from which to generate the full path to the asset.
9
+ attr_reader :uri
10
+
11
+ # The various options used when generating the path.
12
+ attr_reader :options
13
+
14
+ #
15
+ def initialize(uri, options = {})
16
+ @uri = uri
17
+ @options = options
18
+ end
19
+
20
+ # Returns the full path to the asset, complete with
21
+ # timestamp.
22
+ def to_s
23
+ rewrite_path
24
+ rewrite_query
25
+ rewrite_host
26
+
27
+ uri.to_s
28
+ end
29
+
30
+ protected
31
+
32
+ # Hook for rewriting the base path.
33
+ def rewrite_path # :nodoc:
34
+ end
35
+
36
+ # Hook for rewriting the query string.
37
+ def rewrite_query # :nodoc:
38
+ end
39
+
40
+ # Hook for rewriting the host.
41
+ def rewrite_host # :nodoc:
42
+ if host = compute_asset_host
43
+ uri.host = host
44
+ uri.scheme = compute_scheme
45
+ end
46
+ end
47
+
48
+ # Pick an asset host for this source. Returns +nil+ if no host is set,
49
+ # the host if no wildcard is set, the host interpolated with the
50
+ # numbers 0-3 if it contains <tt>%d</tt> (the number is the source hash mod 4),
51
+ # or the value returned from invoking call on an object responding to call
52
+ # (proc or otherwise).
53
+ def compute_asset_host # :nodoc:
54
+ if host = options[:asset_host] || Helpers.asset_host
55
+ if host.respond_to?(:call)
56
+ host.call(uri.to_s)
57
+ elsif host =~ /%d/
58
+ host % (Zlib.crc32(uri.to_s) % 4)
59
+ else
60
+ host
61
+ end
62
+ end
63
+ end
64
+
65
+ # Pick a scheme for the protocol if we are using
66
+ # an asset host.
67
+ def compute_scheme # :nodoc:
68
+ protocol = options[:protocol] || Helpers.protocol
69
+
70
+ if protocol.nil? || protocol == :relative
71
+ nil
72
+ else
73
+ protocol.to_s.sub %r{://\z}, ''
74
+ end
75
+ end
76
+
77
+ # Prepends the given path. If the path is absolute
78
+ # An attempt to merge the URIs is made.
79
+ #
80
+ # TODO: Simplify this once Proc support for :prefix is removed.
81
+ def prepend_path(value) # :nodoc:
82
+ prefix_uri = URI.parse(value)
83
+ uri.path = File.join prefix_uri.path, uri.path
84
+
85
+ if prefix_uri.absolute?
86
+ @uri = prefix_uri.merge(uri)
87
+ end
88
+ end
89
+
90
+ # Append the given query string to the URI
91
+ # instead of clobbering it.
92
+ def append_query(value) # :nodoc:
93
+ if uri.query.nil? || uri.query.empty?
94
+ uri.query = value
95
+ else
96
+ uri.query << ('&' + value)
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -4,57 +4,28 @@ module Sprockets
4
4
  # in the output path. It's used by #asset_path to generate
5
5
  # paths when using asset tags like #javascript_include_tag,
6
6
  # #stylesheet_link_tag, and #image_tag
7
- class FilePath
8
- # The path from which to generate the full path to the asset.
9
- attr_reader :source
10
-
11
- # The various options used when generating the path.
12
- attr_reader :options
13
-
14
- # The base directory the file would be found in
15
- attr_reader :dir
16
-
17
- #
18
- def initialize(source, options = {})
19
- @source = source.to_s
20
- @options = options
21
- @dir = options[:dir].to_s
22
- end
23
-
24
- # Returns the full path to the asset, complete with
25
- # timestamp.
26
- def to_s
27
- path = rewrite_base_path(source)
28
- path = rewrite_query(path)
29
- path
30
- end
7
+ class FilePath < BasePath
31
8
 
32
9
  protected
33
10
 
34
- # Prepends the base path if the path is not
35
- # already an absolute path.
36
- def rewrite_base_path(path) # :nodoc:
37
- if path !~ %r(^/)
38
- File.join('/', dir, path)
39
- else
40
- path
11
+ # Hook for rewriting the base path.
12
+ def rewrite_path # :nodoc:
13
+ if uri.path[0] != ?/
14
+ prepend_path File.join('/', options[:dir].to_s)
41
15
  end
42
16
  end
43
17
 
44
- # Appends an asset timestamp based on the
45
- # modification time of the asset.
46
- def rewrite_query(path) # :nodoc:
47
- if timestamp = mtime(path)
48
- "#{path}?#{timestamp.to_i}"
49
- else
50
- path
18
+ # Hook for rewriting the query string.
19
+ def rewrite_query # :nodoc:
20
+ if timestamp = compute_mtime
21
+ append_query(timestamp.to_i.to_s)
51
22
  end
52
23
  end
53
24
 
54
25
  # Returns the mtime for the given path (relative to
55
26
  # the output path). Returns nil if the file doesn't exist.
56
- def mtime(path) # :nodoc:
57
- public_path = File.join(Helpers.public_path, path)
27
+ def compute_mtime # :nodoc:
28
+ public_path = File.join(Helpers.public_path, uri.path)
58
29
 
59
30
  if File.exist?(public_path)
60
31
  File.mtime(public_path)
@@ -3,14 +3,14 @@ module Sprockets
3
3
  # `ManifestPath` uses the digest path and
4
4
  # prepends the prefix.
5
5
  class ManifestPath < AssetPath
6
- #
7
- def initialize(path, options = {})
6
+ def initialize(uri, path, options = {})
7
+ @uri = uri
8
8
  @options = {
9
9
  :body => false,
10
10
  :prefix => Helpers.prefix
11
11
  }.merge options
12
12
 
13
- @source = path.to_s
13
+ @uri.path = path.to_s
14
14
  end
15
15
  end
16
16
  end
@@ -1,5 +1,5 @@
1
1
  module Sprockets
2
2
  module Helpers
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -1,26 +1,27 @@
1
- require 'sprockets/helpers/version'
2
1
  require 'sprockets'
2
+ require 'sprockets/helpers/version'
3
+ require 'sprockets/helpers/base_path'
4
+ require 'sprockets/helpers/asset_path'
5
+ require 'sprockets/helpers/file_path'
6
+ require 'sprockets/helpers/manifest_path'
7
+ require 'uri'
3
8
 
4
9
  module Sprockets
5
10
  module Helpers
6
- autoload :AssetPath, 'sprockets/helpers/asset_path'
7
- autoload :FilePath, 'sprockets/helpers/file_path'
8
- autoload :ManifestPath, 'sprockets/helpers/manifest_path'
9
-
10
- # Pattern for checking if a given path is an external URI.
11
- URI_MATCH = %r(^[-a-z]+://|^cid:|^//)
12
-
13
11
  class << self
12
+ # Link to assets from a dedicated server.
13
+ attr_accessor :asset_host
14
+
14
15
  # When true, the asset paths will return digest paths.
15
16
  attr_accessor :digest
16
17
 
17
18
  # Set the Sprockets environment to search for assets.
18
19
  # This defaults to the context's #environment method.
19
20
  attr_accessor :environment
20
-
21
+
21
22
  # The manifest file used for lookup
22
23
  attr_accessor :manifest
23
-
24
+
24
25
  # The base URL the Sprocket environment is mapped to.
25
26
  # This defaults to '/assets'.
26
27
  def prefix
@@ -28,6 +29,14 @@ module Sprockets
28
29
  end
29
30
  attr_writer :prefix
30
31
 
32
+ # Customize the protocol when using asset hosts.
33
+ # If the value is :relative, A relative protocol ('//')
34
+ # will be used.
35
+ def protocol
36
+ @protocol ||= 'http://'
37
+ end
38
+ attr_writer :protocol
39
+
31
40
  # The path to the public directory, where the assets
32
41
  # not managed by Sprockets will be located.
33
42
  # Defaults to './public'
@@ -72,26 +81,29 @@ module Sprockets
72
81
  # asset_path 'http://www.example.com/js/xmlhr.js' # => 'http://www.example.com/js/xmlhr.js'
73
82
  #
74
83
  def asset_path(source, options = {})
75
- return source if source =~ URI_MATCH
84
+ uri = URI.parse(source)
85
+
86
+ # Return fast if the URI is absolute
87
+ return source if uri.absolute?
76
88
 
77
89
  # Append extension if necessary
78
- if options[:ext] && File.extname(source).empty?
79
- source << ".#{options[:ext]}"
90
+ if options[:ext] && File.extname(uri.path).empty?
91
+ uri.path << ".#{options[:ext]}"
80
92
  end
81
-
93
+
82
94
  # If a manifest is present, try to grab the path from the manifest first
83
- if Helpers.manifest && Helpers.manifest.assets[source]
84
- return ManifestPath.new(Helpers.manifest.assets[source], options).to_s
95
+ if Helpers.manifest && Helpers.manifest.assets[uri.path]
96
+ return ManifestPath.new(uri, Helpers.manifest.assets[uri.path], options).to_s
85
97
  end
86
-
98
+
87
99
  # If the source points to an asset in the Sprockets
88
100
  # environment use AssetPath to generate the full path.
89
- assets_environment.resolve(source) do |path|
90
- return AssetPath.new(assets_environment[path], options).to_s
101
+ assets_environment.resolve(uri.path) do |path|
102
+ return AssetPath.new(uri, assets_environment[path], options).to_s
91
103
  end
92
104
 
93
105
  # Use FilePath for normal files on the file system
94
- FilePath.new(source, options).to_s
106
+ FilePath.new(uri, options).to_s
95
107
  end
96
108
  alias_method :path_to_asset, :asset_path
97
109
 
@@ -45,28 +45,90 @@ describe Sprockets::Helpers do
45
45
  end
46
46
  end
47
47
 
48
- describe '.prefix' do
48
+ describe '.asset_host' do
49
49
  context 'that is a string' do
50
- it 'sets a custom assets prefix' do
50
+ it 'prepends the asset_host' do
51
51
  within_construct do |c|
52
- c.file 'assets/logo.jpg'
53
-
54
- context.asset_path('logo.jpg').should == '/assets/logo.jpg'
55
- Sprockets::Helpers.prefix = '/images'
56
- context.asset_path('logo.jpg').should == '/images/logo.jpg'
57
- Sprockets::Helpers.prefix = nil
52
+ c.file 'assets/main.js'
53
+ c.file 'public/logo.jpg'
54
+
55
+ Sprockets::Helpers.asset_host = 'assets.example.com'
56
+ context.asset_path('main.js').should == 'http://assets.example.com/assets/main.js'
57
+ context.asset_path('logo.jpg').should =~ %r(http://assets.example.com/logo.jpg\?\d+)
58
+ Sprockets::Helpers.asset_host = nil
59
+ end
60
+ end
61
+
62
+ context 'with a wildcard' do
63
+ it 'cycles asset_host between 0-3' do
64
+ within_construct do |c|
65
+ c.file 'assets/main.css'
66
+ c.file 'public/logo.jpg'
67
+
68
+ Sprockets::Helpers.asset_host = 'assets%d.example.com'
69
+ context.asset_path('main.css').should =~ %r(http://assets[0-3].example.com/assets/main.css)
70
+ context.asset_path('logo.jpg').should =~ %r(http://assets[0-3].example.com/logo.jpg\?\d+)
71
+ Sprockets::Helpers.asset_host = nil
72
+ end
58
73
  end
59
74
  end
60
75
  end
61
-
76
+
62
77
  context 'that is a proc' do
63
- it 'sets a custom assets prefix' do
78
+ it 'prepends the returned asset_host' do
64
79
  within_construct do |c|
65
- c.file 'assets/logo.jpg'
66
-
67
- Sprockets::Helpers.prefix = Proc.new { |source| "http://example.com/#{File.basename(source, '.jpg')}" }
68
- context.asset_path('logo.jpg').should == 'http://example.com/logo/logo.jpg'
69
- Sprockets::Helpers.prefix = nil
80
+ c.file 'assets/main.js'
81
+ c.file 'public/logo.jpg'
82
+
83
+ Sprockets::Helpers.asset_host = Proc.new { |source| File.basename(source, File.extname(source)) + '.assets.example.com' }
84
+ context.asset_path('main.js').should == 'http://main.assets.example.com/assets/main.js'
85
+ context.asset_path('logo.jpg').should =~ %r(http://logo.assets.example.com/logo.jpg\?\d+)
86
+ Sprockets::Helpers.asset_host = nil
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ describe '.prefix' do
93
+ it 'sets a custom assets prefix' do
94
+ within_construct do |c|
95
+ c.file 'assets/logo.jpg'
96
+
97
+ context.asset_path('logo.jpg').should == '/assets/logo.jpg'
98
+ Sprockets::Helpers.prefix = '/images'
99
+ context.asset_path('logo.jpg').should == '/images/logo.jpg'
100
+ Sprockets::Helpers.prefix = nil
101
+ end
102
+ end
103
+ end
104
+
105
+ describe '.protocol' do
106
+ it 'sets the protocol to use with asset_hosts' do
107
+ within_construct do |c|
108
+ c.file 'assets/main.js'
109
+ c.file 'public/logo.jpg'
110
+
111
+ Sprockets::Helpers.asset_host = 'assets.example.com'
112
+ Sprockets::Helpers.protocol = 'https'
113
+ context.asset_path('main.js').should == 'https://assets.example.com/assets/main.js'
114
+ context.asset_path('logo.jpg').should =~ %r(https://assets.example.com/logo.jpg\?\d+)
115
+ Sprockets::Helpers.asset_host = nil
116
+ Sprockets::Helpers.protocol = nil
117
+ end
118
+ end
119
+
120
+ context 'that is :relative' do
121
+ it 'sets a relative protocol' do
122
+ within_construct do |c|
123
+ c.file 'assets/main.js'
124
+ c.file 'public/logo.jpg'
125
+
126
+ Sprockets::Helpers.asset_host = 'assets.example.com'
127
+ Sprockets::Helpers.protocol = :relative
128
+ context.asset_path('main.js').should == '//assets.example.com/assets/main.js'
129
+ context.asset_path('logo.jpg').should =~ %r(\A//assets.example.com/logo.jpg\?\d+)
130
+ Sprockets::Helpers.asset_host = nil
131
+ Sprockets::Helpers.protocol = nil
70
132
  end
71
133
  end
72
134
  end
@@ -101,6 +163,7 @@ describe Sprockets::Helpers do
101
163
  it 'returns absolute paths' do
102
164
  context.asset_path('/path/to/file.js').should == '/path/to/file.js'
103
165
  context.asset_path('/path/to/file.jpg').should == '/path/to/file.jpg'
166
+ context.asset_path('/path/to/file.eot?#iefix').should == '/path/to/file.eot?#iefix'
104
167
  end
105
168
 
106
169
  it 'appends the extension for javascripts and stylesheets' do
@@ -118,9 +181,13 @@ describe Sprockets::Helpers do
118
181
  within_construct do |c|
119
182
  c.file 'public/main.js'
120
183
  c.file 'public/favicon.ico'
184
+ c.file 'public/font.eot'
185
+ c.file 'public/font.svg'
121
186
 
122
187
  context.asset_path('main', :ext => 'js').should =~ %r(/main.js\?\d+)
123
188
  context.asset_path('/favicon.ico').should =~ %r(/favicon.ico\?\d+)
189
+ context.asset_path('font.eot?#iefix').should =~ %r(/font.eot\?\d+#iefix)
190
+ context.asset_path('font.svg#FontName').should =~ %r(/font.svg\?\d+#FontName)
124
191
  end
125
192
  end
126
193
  end
@@ -150,17 +217,25 @@ describe Sprockets::Helpers do
150
217
  it 'uses the digest path if configured' do
151
218
  within_construct do |c|
152
219
  c.file 'assets/main.js'
220
+ c.file 'assets/font.eot'
221
+ c.file 'assets/font.svg'
153
222
 
154
223
  context.asset_path('main', :ext => 'js').should == '/assets/main.js'
155
224
  context.asset_path('main', :ext => 'js', :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js)
225
+ context.asset_path('font.eot?#iefix', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.eot\?#iefix)
226
+ context.asset_path('font.svg#FontName', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.svg#FontName)
156
227
  end
157
228
  end
158
229
 
159
230
  it 'returns a body parameter' do
160
231
  within_construct do |c|
161
232
  c.file 'assets/main.js'
233
+ c.file 'assets/font.eot'
234
+ c.file 'assets/font.svg'
162
235
 
163
236
  context.asset_path('main', :ext => 'js', :body => true).should == '/assets/main.js?body=1'
237
+ context.asset_path('font.eot?#iefix', :body => true).should == '/assets/font.eot?body=1#iefix'
238
+ context.asset_path('font.svg#FontName', :body => true).should == '/assets/font.svg?body=1#FontName'
164
239
  end
165
240
  end
166
241
  end
@@ -171,19 +246,19 @@ describe Sprockets::Helpers do
171
246
  within_construct do |c|
172
247
  asset_file = c.file 'assets/application.js'
173
248
  manifest_file = c.join 'manifest.json'
174
-
249
+
175
250
  manifest = Sprockets::Manifest.new(env, manifest_file)
176
251
  manifest.compile 'application.js'
177
-
252
+
178
253
  Sprockets::Helpers.configure do |config|
179
254
  config.digest = true
180
255
  config.prefix = '/assets'
181
256
  config.manifest = Sprockets::Manifest.new(env, manifest_file)
182
257
  end
183
-
258
+
184
259
  asset_file.delete
185
- context.asset_path('application.js').should =~ %r(/assets/application-[0-9a-f]+.js)
186
-
260
+ context.asset_path('application.js').should =~ %r(/assets/application-[0-9a-f]+.js)
261
+
187
262
  Sprockets::Helpers.digest = nil
188
263
  Sprockets::Helpers.prefix = nil
189
264
  end
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.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-19 00:00:00.000000000 Z
12
+ date: 2012-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sprockets
16
- requirement: &70151392212820 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70151392212820
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: appraisal
27
- requirement: &70151392211980 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0.4'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70151392211980
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '0.4'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec
38
- requirement: &70151392210640 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '2.6'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70151392210640
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.6'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: test-construct
49
- requirement: &70151392209760 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '1.2'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70151392209760
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.2'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rake
60
- requirement: &70151392208960 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70151392208960
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  description: Asset path helpers for Sprockets 2.x applications
70
95
  email:
71
96
  - me@petebrowne.com
@@ -87,6 +112,7 @@ files:
87
112
  - lib/sprockets-helpers.rb
88
113
  - lib/sprockets/helpers.rb
89
114
  - lib/sprockets/helpers/asset_path.rb
115
+ - lib/sprockets/helpers/base_path.rb
90
116
  - lib/sprockets/helpers/file_path.rb
91
117
  - lib/sprockets/helpers/manifest_path.rb
92
118
  - lib/sprockets/helpers/version.rb
@@ -107,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
133
  version: '0'
108
134
  segments:
109
135
  - 0
110
- hash: -2985089145650135547
136
+ hash: -831447907
111
137
  required_rubygems_version: !ruby/object:Gem::Requirement
112
138
  none: false
113
139
  requirements:
@@ -116,10 +142,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
142
  version: '0'
117
143
  segments:
118
144
  - 0
119
- hash: -2985089145650135547
145
+ hash: -831447907
120
146
  requirements: []
121
147
  rubyforge_project: sprockets-helpers
122
- rubygems_version: 1.8.11
148
+ rubygems_version: 1.8.23
123
149
  signing_key:
124
150
  specification_version: 3
125
151
  summary: Asset path helpers for Sprockets 2.x applications