sprockets-rails 3.0.0.beta2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25923aeac0b56b286d1fa13aed70e9473d34ead2
4
- data.tar.gz: 9dfd806b0fd3a1839680622882d7a01db8670f44
3
+ metadata.gz: f20d1344a104a96a8fdc6ca1140776f9bee0b095
4
+ data.tar.gz: b2a9b8a9c86913d9ec6d55a221e2f433cac8201f
5
5
  SHA512:
6
- metadata.gz: 5f8c7541800873483a0032d728d776c5578f770708d83804d8aa77ca41d709726af9a1db5c1ad2e600afd0995f506db10e2ebeda08c8a65de9aa9bc61d41c44e
7
- data.tar.gz: b7888a09152ca3686aa43e5df660dacbfcf185162e87c3818cddc9aa0698ffb183b19a8a03c6a2c5a4af3aa4fac99bfdb80fddf23f1755c9543ee0cbac677be3
6
+ metadata.gz: 5f0bfaac5eaaaa8db5681deb71749e0e1195b8f4e0c819125d70102359094baa1a535ad6a5d6163b60d24b5474848c7db2fc12d9bf917aa9c53d3809e69fa2f0
7
+ data.tar.gz: 8966809de396e82b543ccac54823f99c0abad6696f58bfdc40a1db9e884d196b2570b8c62720c2ac04c35de942a8a4469805c31418d070f09a262afb486124c4
data/README.md CHANGED
@@ -74,10 +74,6 @@ config.assets.version = 'v2'
74
74
 
75
75
  Defaults to `/assets`. Changes the directory to compile assets to.
76
76
 
77
- **`config.assets.manifest`**
78
-
79
- Defines the full path to be used for the asset precompiler's manifest file. Defaults to a randomly-generated filename in the `config.assets.prefix` directory within the public folder.
80
-
81
77
  **`config.assets.digest`**
82
78
 
83
79
  When enabled, fingerprints will be added to asset filenames.
@@ -108,6 +104,24 @@ config.assets.configure do |env|
108
104
  end
109
105
  ```
110
106
 
107
+ **`config.assets.resolve_with`**
108
+
109
+ A list of `:environment` and `:manifest` symbols that defines the order that
110
+ we try to find assets: manifest first, environment second? Manifest only?
111
+
112
+ By default, we check the manifest first if asset digests are enabled and debug
113
+ is not enabled, then we check the environment if compiling is enabled:
114
+ ```
115
+ # Dev where debug is true, or digests are disabled
116
+ %i[ environment ]
117
+
118
+ # Dev default, or production with compile enabled.
119
+ %i[ manifest environment ]
120
+
121
+ # Production default.
122
+ %i[ manifest ]
123
+ ```
124
+
111
125
 
112
126
  ## Complementary plugins
113
127
 
@@ -136,23 +150,16 @@ Sprockets 3.x adds experimental support for subresource integrity checks. The sp
136
150
 
137
151
  ``` ruby
138
152
  javascript_include_tag :application, integrity: true
139
- # => "<script src="/assets/application.js" integrity="sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"
153
+ # => "<script src="/assets/application.js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"
140
154
  ```
141
155
 
142
156
 
143
- ## Contributing
157
+ ## Contributing to Sprockets Rails
144
158
 
145
- Usual bundler workflow.
146
-
147
- ``` shell
148
- $ git clone https://github.com/rails/sprockets-rails.git
149
- $ cd sprockets-rails/
150
- $ bundle install
151
- $ bundle exec rake test
152
- ```
153
-
154
- [![Build Status](https://travis-ci.org/rails/sprockets-rails.svg?branch=master)](https://travis-ci.org/rails/sprockets-rails)
159
+ Sprockets Rails is work of many contributors. You're encouraged to submit pull requests, propose
160
+ features and discuss issues.
155
161
 
162
+ See [CONTRIBUTING](CONTRIBUTING.md).
156
163
 
157
164
  ## Releases
158
165
 
@@ -164,9 +171,12 @@ The minor and patch version will be updated according to [semver](http://semver.
164
171
  * Any time the sprockets dependency is bumped, there will be a new minor release
165
172
  * Simple bug fixes will be patch releases
166
173
 
167
-
168
174
  ## License
169
175
 
170
- Copyright &copy; 2014 Joshua Peek.
176
+ Sprockets Rails is released under the [MIT License](MIT-LICENSE).
177
+
178
+ ## Code Status
171
179
 
172
- Released under the MIT license. See `LICENSE` for details.
180
+ * [![Travis CI](https://api.travis-ci.org/rails/sprockets-rails.svg)](http://travis-ci.org/rails/sprockets-rails)
181
+ * [![Gem Version](https://badge.fury.io/rb/sprockets-rails.svg)](http://badge.fury.io/rb/sprockets-rails)
182
+ * [![Dependencies](https://gemnasium.com/rails/sprockets-rails.svg)](https://gemnasium.com/rails/sprockets-rails)
@@ -7,11 +7,25 @@ module Sprockets
7
7
  module Rails
8
8
  module Helper
9
9
  class AssetNotPrecompiled < StandardError
10
+ include Sprockets::Rails::Utils
10
11
  def initialize(source)
11
- msg = "Asset was not declared to be precompiled in production.\n" +
12
- "Add `Rails.application.config.assets.precompile += " +
13
- "%w( #{source} )` to `config/initializers/assets.rb` and " +
14
- "restart your server"
12
+ msg =
13
+ if using_sprockets4?
14
+ "Asset `#{source}` was not declared to be precompiled in production.\n" +
15
+ "Declare links to your assets in `assets/config/manifest.js`.\n" +
16
+ "Examples:\n" +
17
+ "`//= link ../javascripts/application.js`\n" +
18
+ "`//= link_directory ../javascripts .js`\n" +
19
+ "`//= link_directory ../stylesheets .css`\n" +
20
+ "`//= link_tree ../javascripts .js`\n" +
21
+ "`//= link_tree ../images`\n" +
22
+ "and restart your server"
23
+ else
24
+ "Asset was not declared to be precompiled in production.\n" +
25
+ "Add `Rails.application.config.assets.precompile += " +
26
+ "%w( #{source} )` to `config/initializers/assets.rb` and " +
27
+ "restart your server"
28
+ end
15
29
  super(msg)
16
30
  end
17
31
  end
@@ -20,9 +34,12 @@ module Sprockets
20
34
  include ActionView::Helpers::AssetTagHelper
21
35
  include Sprockets::Rails::Utils
22
36
 
23
- VIEW_ACCESSORS = [:assets_environment, :assets_manifest,
24
- :assets_precompile, :precompiled_assets,
25
- :assets_prefix, :digest_assets, :debug_assets]
37
+ VIEW_ACCESSORS = [
38
+ :assets_environment, :assets_manifest,
39
+ :assets_precompile, :precompiled_asset_checker,
40
+ :assets_prefix, :digest_assets, :debug_assets,
41
+ :resolve_assets_with
42
+ ]
26
43
 
27
44
  def self.included(klass)
28
45
  klass.class_attribute(*VIEW_ACCESSORS)
@@ -57,15 +74,23 @@ module Sprockets
57
74
  end
58
75
 
59
76
  def compute_asset_path(path, options = {})
60
- if digest_path = asset_digest_path(path, options)
61
- path = digest_path if digest_assets
62
- path += "?body=1" if options[:debug] && !using_sprockets4?
63
- File.join(assets_prefix || "/", path)
77
+ debug = options[:debug]
78
+
79
+ if asset_path = resolve_asset_path(path, debug)
80
+ File.join(assets_prefix || "/", legacy_debug_path(asset_path, debug))
64
81
  else
65
82
  super
66
83
  end
67
84
  end
68
85
 
86
+ # Resolve the asset path against the Sprockets manifest or environment.
87
+ # Returns nil if it's an asset we don't know about.
88
+ def resolve_asset_path(path, allow_non_precompiled = false) #:nodoc:
89
+ resolve_asset do |resolver|
90
+ resolver.asset_path path, digest_assets, allow_non_precompiled
91
+ end
92
+ end
93
+
69
94
  # Expand asset path to digested form.
70
95
  #
71
96
  # path - String path
@@ -73,21 +98,8 @@ module Sprockets
73
98
  #
74
99
  # Returns String path or nil if no asset was found.
75
100
  def asset_digest_path(path, options = {})
76
- if manifest = assets_manifest
77
- if digest_path = manifest.assets[path]
78
- return digest_path
79
- end
80
- end
81
-
82
- if environment = assets_environment
83
- if asset = environment[path]
84
- unless options[:debug]
85
- if !precompiled_assets.include?(asset.logical_path)
86
- raise AssetNotPrecompiled.new(asset.logical_path)
87
- end
88
- end
89
- return asset.digest_path
90
- end
101
+ resolve_asset do |resolver|
102
+ resolver.digest_path path, options[:debug]
91
103
  end
92
104
  end
93
105
 
@@ -98,26 +110,11 @@ module Sprockets
98
110
  #
99
111
  # Returns String integrity attribute or nil if no asset was found.
100
112
  def asset_integrity(path, options = {})
101
- path = path.to_s
102
- if extname = compute_asset_extname(path, options)
103
- path = "#{path}#{extname}"
104
- end
105
-
106
- if manifest = assets_manifest
107
- if digest_path = manifest.assets[path]
108
- if metadata = manifest.files[digest_path]
109
- return metadata["integrity"]
110
- end
111
- end
112
- end
113
+ path = path_with_extname(path, options)
113
114
 
114
- if environment = assets_environment
115
- if asset = environment[path]
116
- return asset.integrity
117
- end
115
+ resolve_asset do |resolver|
116
+ resolver.integrity path
118
117
  end
119
-
120
- nil
121
118
  end
122
119
 
123
120
  # Override javascript tag helper to provide debugging support.
@@ -125,15 +122,7 @@ module Sprockets
125
122
  # Eventually will be deprecated and replaced by source maps.
126
123
  def javascript_include_tag(*sources)
127
124
  options = sources.extract_options!.stringify_keys
128
-
129
- unless request_ssl?
130
- options.delete("integrity")
131
- end
132
-
133
- case options["integrity"]
134
- when true, false, nil
135
- compute_integrity = options.delete("integrity")
136
- end
125
+ integrity = compute_integrity?(options)
137
126
 
138
127
  if options["debug"] != false && request_debug_assets?
139
128
  sources.map { |source|
@@ -151,9 +140,8 @@ module Sprockets
151
140
  }.flatten.uniq.join("\n").html_safe
152
141
  else
153
142
  sources.map { |source|
154
- super(source, compute_integrity ?
155
- options.merge("integrity" => asset_integrity(source, :type => :javascript)) :
156
- options)
143
+ options = options.merge('integrity' => asset_integrity(source, :type => :javascript)) if integrity
144
+ super source, options
157
145
  }.join("\n").html_safe
158
146
  end
159
147
  end
@@ -163,15 +151,7 @@ module Sprockets
163
151
  # Eventually will be deprecated and replaced by source maps.
164
152
  def stylesheet_link_tag(*sources)
165
153
  options = sources.extract_options!.stringify_keys
166
-
167
- unless request_ssl?
168
- options.delete("integrity")
169
- end
170
-
171
- case options["integrity"]
172
- when true, false, nil
173
- compute_integrity = options.delete("integrity")
174
- end
154
+ integrity = compute_integrity?(options)
175
155
 
176
156
  if options["debug"] != false && request_debug_assets?
177
157
  sources.map { |source|
@@ -189,15 +169,34 @@ module Sprockets
189
169
  }.flatten.uniq.join("\n").html_safe
190
170
  else
191
171
  sources.map { |source|
192
- super(source, compute_integrity ?
193
- options.merge("integrity" => asset_integrity(source, :type => :stylesheet)) :
194
- options)
172
+ options = options.merge('integrity' => asset_integrity(source, :type => :stylesheet)) if integrity
173
+ super source, options
195
174
  }.join("\n").html_safe
196
175
  end
197
176
  end
198
177
 
199
178
  protected
200
- def request_ssl?
179
+ # This is awkward: `integrity` is a boolean option indicating whether
180
+ # we want to include or omit the subresource integrity hash, but the
181
+ # options hash is also passed through as literal tag attributes.
182
+ # That means we have to delete the shortcut boolean option so it
183
+ # doesn't bleed into the tag attributes, but also check its value if
184
+ # it's boolean-ish.
185
+ def compute_integrity?(options)
186
+ if secure_subresource_integrity_context?
187
+ case options['integrity']
188
+ when nil, false, true
189
+ options.delete('integrity') == true
190
+ end
191
+ else
192
+ options.delete 'integrity'
193
+ false
194
+ end
195
+ end
196
+
197
+ # Only serve integrity metadata for HTTPS requests:
198
+ # http://www.w3.org/TR/SRI/#non-secure-contexts-remain-non-secure
199
+ def secure_subresource_integrity_context?
201
200
  respond_to?(:request) && self.request && self.request.ssl?
202
201
  end
203
202
 
@@ -205,28 +204,152 @@ module Sprockets
205
204
  # and replaced by source maps in Sprockets 3.x.
206
205
  def request_debug_assets?
207
206
  debug_assets || (defined?(controller) && controller && params[:debug_assets])
208
- rescue
209
- return false
207
+ rescue # FIXME: what exactly are we rescuing?
208
+ false
210
209
  end
211
210
 
212
211
  # Internal method to support multifile debugging. Will
213
212
  # eventually be removed w/ Sprockets 3.x.
214
213
  def lookup_debug_asset(path, options = {})
215
- return unless env = assets_environment
214
+ path = path_with_extname(path, options)
215
+
216
+ resolve_asset do |resolver|
217
+ resolver.find_debug_asset path
218
+ end
219
+ end
220
+
221
+ # compute_asset_extname is in AV::Helpers::AssetUrlHelper
222
+ def path_with_extname(path, options)
216
223
  path = path.to_s
217
- if extname = compute_asset_extname(path, options)
218
- path = "#{path}#{extname}"
224
+ "#{path}#{compute_asset_extname(path, options)}"
225
+ end
226
+
227
+ # Try each asset resolver and return the first non-nil result.
228
+ def resolve_asset
229
+ asset_resolver_strategies.detect do |resolver|
230
+ if result = yield(resolver)
231
+ break result
232
+ end
219
233
  end
234
+ end
220
235
 
221
- if asset = env[path, pipeline: :debug]
222
- original_path = asset.logical_path.gsub('.debug', '')
223
- unless precompiled_assets.include?(original_path)
224
- raise AssetNotPrecompiled.new(original_path)
236
+ # List of resolvers in `config.assets.resolve_with` order.
237
+ def asset_resolver_strategies
238
+ @asset_resolver_strategies ||=
239
+ Array(resolve_assets_with).map do |name|
240
+ HelperAssetResolvers[name].new(self)
225
241
  end
242
+ end
243
+
244
+ # Append ?body=1 if debug is on and we're on old Sprockets.
245
+ def legacy_debug_path(path, debug)
246
+ if debug && !using_sprockets4?
247
+ "#{path}?body=1"
248
+ else
249
+ path
226
250
  end
251
+ end
252
+ end
253
+
254
+ # Use a separate module since Helper is mixed in and we needn't pollute
255
+ # the class namespace with our internals.
256
+ module HelperAssetResolvers #:nodoc:
257
+ def self.[](name)
258
+ case name
259
+ when :manifest
260
+ Manifest
261
+ when :environment
262
+ Environment
263
+ else
264
+ raise ArgumentError, "Unrecognized asset resolver: #{name.inspect}. Expected :manifest or :environment"
265
+ end
266
+ end
267
+
268
+ class Manifest #:nodoc:
269
+ def initialize(view)
270
+ @manifest = view.assets_manifest
271
+ raise ArgumentError, 'config.assets.resolve_with includes :manifest, but app.assets_manifest is nil' unless @manifest
272
+ end
273
+
274
+ def asset_path(path, digest, allow_non_precompiled = false)
275
+ if digest
276
+ digest_path path, allow_non_precompiled
277
+ end
278
+ end
279
+
280
+ def digest_path(path, allow_non_precompiled = false)
281
+ @manifest.assets[path]
282
+ end
283
+
284
+ def integrity(path)
285
+ if meta = metadata(path)
286
+ meta["integrity"]
287
+ end
288
+ end
289
+
290
+ def find_debug_asset(path)
291
+ nil
292
+ end
293
+
294
+ private
295
+ def metadata(path)
296
+ if digest_path = digest_path(path)
297
+ @manifest.files[digest_path]
298
+ end
299
+ end
300
+ end
301
+
302
+ class Environment #:nodoc:
303
+ def initialize(view)
304
+ raise ArgumentError, 'config.assets.resolve_with includes :environment, but app.assets is nil' unless view.assets_environment
305
+ @env = view.assets_environment
306
+ @precompiled_asset_checker = view.precompiled_asset_checker
307
+ end
308
+
309
+ def asset_path(path, digest, allow_non_precompiled = false)
310
+ # Digests enabled? Do the work to calculate the full asset path.
311
+ if digest
312
+ digest_path path, allow_non_precompiled
313
+
314
+ # Otherwise, ask the Sprockets environment whether the asset exists
315
+ # and check whether it's also precompiled for production deploys.
316
+ elsif find_asset(path)
317
+ raise_unless_precompiled_asset path unless allow_non_precompiled
318
+ path
319
+ end
320
+ end
321
+
322
+ def digest_path(path, allow_non_precompiled = false)
323
+ if asset = find_asset(path)
324
+ raise_unless_precompiled_asset path unless allow_non_precompiled
325
+ asset.digest_path
326
+ end
327
+ end
227
328
 
228
- asset
329
+ def integrity(path)
330
+ find_asset(path).try :integrity
229
331
  end
332
+
333
+ def find_debug_asset(path)
334
+ if asset = find_asset(path, pipeline: :debug)
335
+ raise_unless_precompiled_asset asset.logical_path.sub('.debug', '')
336
+ asset
337
+ end
338
+ end
339
+
340
+ private
341
+ def find_asset(path, options = {})
342
+ @env[path, options]
343
+ end
344
+
345
+ def precompiled?(path)
346
+ @precompiled_asset_checker.call path
347
+ end
348
+
349
+ def raise_unless_precompiled_asset(path)
350
+ raise Helper::AssetNotPrecompiled.new(path) unless precompiled?(path)
351
+ end
352
+ end
230
353
  end
231
354
  end
232
355
  end
@@ -6,11 +6,6 @@ module Sprockets
6
6
  def using_sprockets4?
7
7
  Gem::Version.new(Sprockets::VERSION) >= Gem::Version.new('4.0.0')
8
8
  end
9
-
10
- # Internal: Generate a Set of all precompiled assets logical paths.
11
- def build_precompiled_list(manifest, assets)
12
- manifest.find(assets || []).map(&:logical_path)
13
- end
14
9
  end
15
10
  end
16
11
  end
@@ -1,5 +1,5 @@
1
1
  module Sprockets
2
2
  module Rails
3
- VERSION = "3.0.0.beta2"
3
+ VERSION = "3.0.0"
4
4
  end
5
5
  end
@@ -8,6 +8,7 @@ require 'sprockets/rails/context'
8
8
  require 'sprockets/rails/helper'
9
9
  require 'sprockets/rails/route_wrapper'
10
10
  require 'sprockets/rails/version'
11
+ require 'set'
11
12
 
12
13
  module Rails
13
14
  class Application
@@ -27,8 +28,18 @@ module Rails
27
28
  # Returns Sprockets::Manifest for app config.
28
29
  attr_accessor :assets_manifest
29
30
 
30
- # Returns array of already precompiled assets
31
- attr_accessor :precompiled_assets
31
+ # Called from asset helpers to alert you if you reference an asset URL that
32
+ # isn't precompiled and hence won't be available in production.
33
+ def asset_precompiled?(logical_path)
34
+ precompiled_assets.include? logical_path
35
+ end
36
+
37
+ # Lazy-load the precompile list so we don't cause asset compilation at app
38
+ # boot time, but ensure we cache the list so we don't recompute it for each
39
+ # request or test case.
40
+ def precompiled_assets
41
+ @precompiled_assets ||= assets_manifest.find(config.assets.precompile).map(&:logical_path).to_set
42
+ end
32
43
  end
33
44
 
34
45
  class Engine < Railtie
@@ -37,7 +48,6 @@ module Rails
37
48
  initializer :append_assets_path, :group => :all do |app|
38
49
  app.config.assets.paths.unshift(*paths["vendor/assets"].existent_directories)
39
50
  app.config.assets.paths.unshift(*paths["lib/assets"].existent_directories)
40
- app.config.assets.paths.unshift(*paths["app"].existent_directories.grep(/\/assets\z/))
41
51
  app.config.assets.paths.unshift(*paths["app/assets"].existent_directories)
42
52
  end
43
53
  end
@@ -79,11 +89,6 @@ module Sprockets
79
89
  config.assets.paths.each { |path| env.append_path(path) }
80
90
  end
81
91
 
82
- config.assets.configure do |env|
83
- env.js_compressor = config.assets.js_compressor
84
- env.css_compressor = config.assets.css_compressor
85
- end
86
-
87
92
  config.assets.configure do |env|
88
93
  env.context_class.send :include, ::Sprockets::Rails::Context
89
94
  env.context_class.assets_prefix = config.assets.prefix
@@ -123,16 +128,23 @@ module Sprockets
123
128
 
124
129
  env = Sprockets::Environment.new(app.root.to_s)
125
130
 
131
+ config = app.config
132
+
126
133
  # Run app.assets.configure blocks
127
- app.config.assets._blocks.each do |block|
134
+ config.assets._blocks.each do |block|
128
135
  block.call(env)
129
136
  end
130
137
 
138
+ # Set compressors after the configure blocks since they can
139
+ # define new compressors and we only accept existent compressors.
140
+ env.js_compressor = config.assets.js_compressor
141
+ env.css_compressor = config.assets.css_compressor
142
+
131
143
  # No more configuration changes at this point.
132
144
  # With cache classes on, Sprockets won't check the FS when files
133
145
  # change. Preferable in production when the FS only changes on
134
146
  # deploys when the app restarts.
135
- if app.config.cache_classes
147
+ if config.cache_classes
136
148
  env = env.cached
137
149
  end
138
150
 
@@ -153,10 +165,14 @@ module Sprockets
153
165
  app.routes.prepend do
154
166
  mount app.assets => config.assets.prefix
155
167
  end
156
- app.assets_manifest = build_manifest(app)
157
- app.precompiled_assets = build_precompiled_list(app.assets_manifest, config.assets.precompile)
158
- else
159
- app.assets_manifest = build_manifest(app)
168
+ end
169
+
170
+ app.assets_manifest = build_manifest(app)
171
+
172
+ if config.assets.resolve_with.nil?
173
+ config.assets.resolve_with = []
174
+ config.assets.resolve_with << :manifest if config.assets.digest && !config.assets.debug
175
+ config.assets.resolve_with << :environment if config.assets.compile
160
176
  end
161
177
 
162
178
  ActionDispatch::Routing::RouteWrapper.class_eval do
@@ -182,7 +198,11 @@ module Sprockets
182
198
 
183
199
  self.assets_environment = app.assets
184
200
  self.assets_manifest = app.assets_manifest
185
- self.precompiled_assets = app.precompiled_assets
201
+
202
+ self.resolve_assets_with = config.assets.resolve_with
203
+
204
+ # Expose the app precompiled asset check to the view
205
+ self.precompiled_asset_checker = -> logical_path { app.asset_precompiled? logical_path }
186
206
  end
187
207
  end
188
208
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Peek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-15 00:00:00.000000000 Z
11
+ date: 2015-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sprockets
@@ -114,7 +114,6 @@ executables: []
114
114
  extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
- - LICENSE
118
117
  - README.md
119
118
  - lib/sprockets/rails.rb
120
119
  - lib/sprockets/rails/context.rb
@@ -139,14 +138,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
138
  version: 1.9.3
140
139
  required_rubygems_version: !ruby/object:Gem::Requirement
141
140
  requirements:
142
- - - ">"
141
+ - - ">="
143
142
  - !ruby/object:Gem::Version
144
- version: 1.3.1
143
+ version: '0'
145
144
  requirements: []
146
145
  rubyforge_project:
147
- rubygems_version: 2.4.7
146
+ rubygems_version: 2.4.5.1
148
147
  signing_key:
149
148
  specification_version: 4
150
149
  summary: Sprockets Rails integration
151
150
  test_files: []
152
- has_rdoc:
data/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2014 Joshua Peek
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.