sprockets 3.0.0.rc.1 → 3.0.0.rc.2

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
  SHA1:
3
- metadata.gz: db0209bde9d0914d567ab73432b4081d0ee58496
4
- data.tar.gz: 91da9e628f1837de6fef73391e211f512ceae82e
3
+ metadata.gz: 927a7d3d329ad614ee230b94912d3d2f64979382
4
+ data.tar.gz: 1b150071ee5ed020e9d0b3a7006e1f5b5553f4fd
5
5
  SHA512:
6
- metadata.gz: 66df808557bd8cb9f426cdde656a83231658f10ef1ccadd8865e15f513d31db1ac3d212b766e3e6c247e80c7ad45f5079f195cb5b2285d32e0237c8b70346e8e
7
- data.tar.gz: f57cbb51a0ff274d44c0a62933eb26d8576d4d6c25dd85db79e93dbf35b219f558140b1a5bb404f8fc290625082bf2261a7a2e2d98ce74871d0f27a730b368e1
6
+ metadata.gz: 0e326e611bdb66495f10b43cf890c420710fc00c4ac1f9f3c57fd8fba89c087561a680ce1733a6dfcbc92ffdfae1fa715a1e00e0f90822ea6304d49cde98fa46
7
+ data.tar.gz: 1529cd2dda83604b3505e744b88f74f6f71ffcf37dbc23449e571c1391347ee89e36cf62e5c186c4ec18c1e27a3ffadb8bbbee3d6dfb7543fc54f2c03f27ceab
@@ -34,6 +34,7 @@ module Sprockets
34
34
  transformers: Hash.new { |h, k| {}.freeze }.freeze,
35
35
  version: ""
36
36
  }.freeze
37
+ self.computed_config = {}
37
38
 
38
39
  @context_class = Context
39
40
 
@@ -50,7 +50,7 @@ module Sprockets
50
50
  # negligently reset thus appearing as if the file hasn't changed on
51
51
  # disk. Also, the mtime is only read to the nearest second. Its
52
52
  # also possible the file was updated more than once in a given second.
53
- cache.fetch(['file_digest', path, stat.mtime.to_i]) do
53
+ cache.fetch("file_digest:#{path}:#{stat.mtime.to_i}") do
54
54
  self.stat_digest(path, stat)
55
55
  end
56
56
  end
@@ -13,12 +13,15 @@ module Sprockets
13
13
 
14
14
  def initialize_configuration(parent)
15
15
  @config = parent.config
16
+ @computed_config = parent.computed_config
16
17
  @logger = parent.logger
17
18
  @context_class = Class.new(parent.context_class)
18
19
  end
19
20
 
20
21
  attr_reader :config
21
22
 
23
+ attr_accessor :computed_config
24
+
22
25
  def config=(config)
23
26
  raise TypeError, "can't assign mutable config" unless config.frozen?
24
27
  @config = config
@@ -53,6 +53,8 @@ module Sprockets
53
53
  def register_engine(ext, klass, options = {})
54
54
  ext = Sprockets::Utils.normalize_extension(ext)
55
55
 
56
+ self.computed_config = {}
57
+
56
58
  if klass.respond_to?(:call)
57
59
  processor = klass
58
60
  self.config = hash_reassoc(config, :engines) do |engines|
@@ -74,10 +76,6 @@ module Sprockets
74
76
  end
75
77
  end
76
78
  end
77
-
78
- self.config = hash_reassoc(config, :_extnames) do
79
- compute_extname_map
80
- end
81
79
  end
82
80
  end
83
81
  end
@@ -26,15 +26,15 @@ module Sprockets
26
26
  def load(uri)
27
27
  filename, params = parse_asset_uri(uri)
28
28
  if params.key?(:id)
29
- asset = cache.fetch(['asset-uri', VERSION, uri]) do
29
+ asset = cache.fetch("asset-uri:#{VERSION}#{uri}") do
30
30
  load_asset_by_id_uri(uri, filename, params)
31
31
  end
32
32
  else
33
33
  asset = fetch_asset_from_dependency_cache(uri, filename) do |paths|
34
34
  if paths
35
35
  digest = digest(resolve_dependencies(paths))
36
- if id_uri = cache.get(['asset-uri-digest', VERSION, uri, digest], true)
37
- cache.get(['asset-uri', VERSION, id_uri], true)
36
+ if id_uri = cache.get("asset-uri-digest:#{VERSION}:#{uri}:#{digest}", true)
37
+ cache.get("asset-uri:#{VERSION}:#{id_uri}", true)
38
38
  end
39
39
  else
40
40
  load_asset_by_uri(uri, filename, params)
@@ -150,14 +150,14 @@ module Sprockets
150
150
  end
151
151
  }.max
152
152
 
153
- cache.set(['asset-uri', VERSION, asset[:uri]], asset, true)
154
- cache.set(['asset-uri-digest', VERSION, uri, asset[:dependencies_digest]], asset[:uri], true)
153
+ cache.set("asset-uri:#{VERSION}:#{asset[:uri]}", asset, true)
154
+ cache.set("asset-uri-digest:#{VERSION}:#{uri}:#{asset[:dependencies_digest]}", asset[:uri], true)
155
155
 
156
156
  asset
157
157
  end
158
158
 
159
159
  def fetch_asset_from_dependency_cache(uri, filename, limit = 3)
160
- key = ['asset-uri-cache-dependencies', VERSION, uri, file_digest(filename)]
160
+ key = "asset-uri-cache-dependencies:#{VERSION}:#{uri}:#{file_digest(filename)}"
161
161
  history = cache.get(key) || []
162
162
 
163
163
  history.each_with_index do |deps, index|
@@ -57,6 +57,8 @@ module Sprockets
57
57
  charset ||= :default if mime_type.start_with?('text/')
58
58
  charset = EncodingUtils::CHARSET_DETECT[charset] if charset.is_a?(Symbol)
59
59
 
60
+ self.computed_config = {}
61
+
60
62
  self.config = hash_reassoc(config, :mime_exts) do |mime_exts|
61
63
  extnames.each do |extname|
62
64
  mime_exts[extname] = mime_type
@@ -69,10 +71,6 @@ module Sprockets
69
71
  type[:charset] = charset if charset
70
72
  mime_types.merge(mime_type => type)
71
73
  end
72
-
73
- self.config = hash_reassoc(config, :_extnames) do
74
- compute_extname_map
75
- end
76
74
  end
77
75
 
78
76
  # Internal: Get detecter function for MIME type.
@@ -106,13 +104,17 @@ module Sprockets
106
104
  end
107
105
 
108
106
  private
107
+ def extname_map
108
+ self.computed_config[:_extnames] ||= compute_extname_map
109
+ end
110
+
109
111
  def compute_extname_map
110
112
  graph = {}
111
113
 
112
114
  ([nil] + pipelines.keys.map(&:to_s)).each do |pipeline|
113
115
  pipeline_extname = ".#{pipeline}" if pipeline
114
116
  ([[nil, nil]] + config[:mime_exts].to_a).each do |format_extname, format_type|
115
- 3.times do |n|
117
+ 4.times do |n|
116
118
  config[:engines].keys.permutation(n).each do |engine_extnames|
117
119
  key = "#{pipeline_extname}#{format_extname}#{engine_extnames.join}"
118
120
  type = format_type || config[:engine_mime_types][engine_extnames.first]
@@ -261,12 +261,14 @@ module Sprockets
261
261
  #
262
262
  # Returns nothing.
263
263
  def atomic_write(filename)
264
- tmpname = [
265
- File.dirname(filename),
264
+ dirname, basename = File.split(filename)
265
+ basename = [
266
+ basename,
266
267
  Thread.current.object_id,
267
268
  Process.pid,
268
269
  rand(1000000)
269
270
  ].join('.')
271
+ tmpname = File.join(dirname, basename)
270
272
 
271
273
  File.open(tmpname, 'wb+') do |f|
272
274
  yield f
@@ -195,7 +195,7 @@ module Sprockets
195
195
  #
196
196
  def parse_path_extnames(path)
197
197
  engines = []
198
- extname, value = match_path_extname(path, config[:_extnames])
198
+ extname, value = match_path_extname(path, extname_map)
199
199
 
200
200
  if extname
201
201
  path = path.chomp(extname)
@@ -94,17 +94,22 @@ module Sprockets
94
94
  raise ArgumentError, "too few transform types: #{types.inspect}"
95
95
  end
96
96
 
97
+ i = 0
97
98
  processors = []
98
- enum = types.each
99
99
 
100
100
  loop do
101
- src, dst = enum.next, enum.peek
101
+ src = types[i]
102
+ dst = types[i+1]
103
+ break unless src && dst
104
+
102
105
  unless processor = transformers[src][dst]
103
106
  raise ArgumentError, "missing transformer for type: #{src} to #{dst}"
104
107
  end
105
108
  processors.concat config[:postprocessors][src]
106
109
  processors << processor
107
110
  processors.concat config[:preprocessors][dst]
111
+
112
+ i += 1
108
113
  end
109
114
 
110
115
  if processors.size > 1
@@ -1,3 +1,3 @@
1
1
  module Sprockets
2
- VERSION = "3.0.0.rc.1"
2
+ VERSION = "3.0.0.rc.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc.1
4
+ version: 3.0.0.rc.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Stephenson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-29 00:00:00.000000000 Z
12
+ date: 2015-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack