rails-assets-manifest 1.1.0 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf7f05873e248861f8c1e82511a9a2006336acceaed1446555cc0ee9e4262228
4
- data.tar.gz: cdfac3bf315ea70fd619c095f156b346e8f0fef8e4710db98e262ad25c080f11
3
+ metadata.gz: 31f22a9a97254698d652e6724a019c23db31f7a3550c31cd8b69dc1697103cd8
4
+ data.tar.gz: a4bc81e134d549c8cb8001403281fa4b4c535b44e1598a77d2a7c10b74851c6f
5
5
  SHA512:
6
- metadata.gz: 8ac084087c8b7315975722241c18eef100a4148f10e70fa5f23ca515d26ede428bb222cae792c2cc116abe0873633d726f4dc23807f47622e0228ffbb203f519
7
- data.tar.gz: e915fe0abf63b0c369aca79a5199b29f2d2e25927c4fbcd75d8c87adeb9f0e5634f50662d8090de96b69b638ba657e0e7fc4ba1b5be4ca3a81aab8719a31b0ba
6
+ metadata.gz: 6abbeff6a818cbe8ceff2f5737c564c336baded7d58df41508a0ae0e28b32021e1bfadd0fef206c6c6df30acc709002a343ebe1d1e2afdf70d3708f6caef9fb4
7
+ data.tar.gz: 6ac071032f401ac1aae354a4de86189e665918be1060104fa3a83a8dfeb645fb345a70b24b7455c4bce1074315232e70425df9e837c01d54f9e187bb401c1a67
data/CHANGELOG.md CHANGED
@@ -17,6 +17,18 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Ch
17
17
  ### Breaks
18
18
 
19
19
 
20
+ ## 2.0.0 - (2019-08-08)
21
+ ---
22
+
23
+ ### New
24
+ * Accept glob patterns for `manifests` option
25
+
26
+
27
+ ### Breaks
28
+ * Change `manifest` configuration option into `manifests` to support multiple files
29
+ * Change configuration option into to support multiple files
30
+
31
+
20
32
  ## 1.1.0 - (2019-08-08)
21
33
  ---
22
34
 
data/README.md CHANGED
@@ -44,13 +44,19 @@ gem 'rails-assets-manifest'
44
44
  The manifest path can be configured e.g. in an environment:
45
45
 
46
46
  ```ruby
47
- config.assets.manifest = "public/.asset-manifest.json"
47
+ config.assets.manifests = %w(public/.asset-manifest.json)
48
48
  ```
49
49
 
50
50
  If `config.cache_classes` is set to `true` the manifest file be loaded once on boot and raise errors if missing or invalid.
51
51
 
52
52
  Assets included with `integrity: true` will raise an error if the integrity option is missing in the manifest.
53
53
 
54
+ Multiple manifests can be loaded by specifying multiple files. Glob patterns are supported:
55
+
56
+ ```ruby
57
+ config.assets.manifests = %w(public/.manifest.*.json lib/manifest.json)
58
+ ```
59
+
54
60
  ## TODO
55
61
 
56
62
  * Override/Join with `asset_host` URL?
@@ -25,7 +25,7 @@ module Rails
25
25
  config = Rails.application.config
26
26
 
27
27
  Manifest.new \
28
- path: config.assets.manifest,
28
+ files: config.assets.manifests,
29
29
  cache: config.cache_classes
30
30
  end
31
31
  end
@@ -4,8 +4,8 @@ module Rails::Assets::Manifest
4
4
  class Manifest
5
5
  attr_reader :path
6
6
 
7
- def initialize(path:, cache: true)
8
- @path = path.to_s.freeze
7
+ def initialize(files:, cache: true)
8
+ @files = Array(files).flatten.each(&:freeze).freeze
9
9
  @cache = cache
10
10
 
11
11
  data if cache?
@@ -22,12 +22,16 @@ module Rails::Assets::Manifest
22
22
  def lookup!(name)
23
23
  lookup(name) || begin
24
24
  raise EntryMissing.new <<~ERROR
25
- Can't find #{name} in #{path}. Your manifest contains:
25
+ Can't find #{name} in #{path}. Your manifests contain:
26
26
  #{JSON.pretty_generate(data.keys)}
27
27
  ERROR
28
28
  end
29
29
  end
30
30
 
31
+ def key?(name)
32
+ data.key?(name.to_s)
33
+ end
34
+
31
35
  private
32
36
 
33
37
  Entry = Struct.new(:src, :integrity) do
@@ -44,14 +48,20 @@ module Rails::Assets::Manifest
44
48
  end
45
49
  end
46
50
 
51
+ def files
52
+ @files.map {|path| Dir.glob(path) }.flatten
53
+ end
54
+
47
55
  def load
48
- JSON.parse(File.read(path)).transform_values do |entry|
49
- if entry.is_a?(String)
50
- Entry.new(entry, nil)
51
- elsif entry.is_a?(Hash)
52
- Entry.new(entry.fetch('src'), entry['integrity'])
53
- else
54
- raise "Invalid entry: #{entry.inspect}"
56
+ files.each_with_object({}) do |file, entries|
57
+ JSON.parse(File.read(file)).each_pair do |key, entry|
58
+ if entry.is_a?(String)
59
+ entries[key] = Entry.new(entry, nil)
60
+ elsif entry.is_a?(Hash) && entry.key?('src')
61
+ entries[key] = Entry.new(entry['src'], entry['integrity'])
62
+ else
63
+ raise "Invalid manifest entry: #{entry.inspect}"
64
+ end
55
65
  end
56
66
  end
57
67
  rescue Errno::ENOENT => e
@@ -10,8 +10,8 @@ module Rails
10
10
  # sprockets.
11
11
  config.assets ||= ::ActiveSupport::OrderedOptions.new
12
12
 
13
- # Path where the manifest file is loaded from.
14
- config.assets.manifest = 'public/assets/manifest.json'
13
+ # Path where the manifest files are loaded from.
14
+ config.assets.manifests = ['public/assets/manifest.json']
15
15
 
16
16
  # If set to true missing assets will not raise an
17
17
  # exception but are passed through to sprockets
@@ -4,8 +4,8 @@ module Rails
4
4
  module Assets
5
5
  module Manifest
6
6
  module VERSION
7
- MAJOR = 1
8
- MINOR = 1
7
+ MAJOR = 2
8
+ MINOR = 0
9
9
  PATCH = 0
10
10
  STAGE = nil
11
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-assets-manifest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen