Regenerate @_lookup_cache after each manipulation
Trying to call Resource#metadata from within MyExtension#manipulate_resource_list generates an exception in Proxies::ResourceInstanceMethods#get_source_file because @_lookup_cache is empty. Moving the recalculation inside the loop means regenerating the cache after each manipulation but allows extensions to examine the page metadata when manipulating proxied resources.
This commit is contained in:
parent
ffecc3e4cc
commit
d30f883e48
1 changed files with 11 additions and 9 deletions
|
@ -47,15 +47,17 @@ module Middleman
|
|||
# @return [void]
|
||||
def rebuild_resource_list!(reason=nil)
|
||||
@resources = @resource_list_manipulators.inject([]) do |result, (_, inst)|
|
||||
inst.manipulate_resource_list(result)
|
||||
end
|
||||
newres = inst.manipulate_resource_list(result)
|
||||
|
||||
# Reset lookup cache
|
||||
@_lookup_cache = { :path => {}, :destination_path => {} }
|
||||
@resources.each do |resource|
|
||||
newres.each do |resource|
|
||||
@_lookup_cache[:path][resource.path] = resource
|
||||
@_lookup_cache[:destination_path][resource.destination_path] = resource
|
||||
end
|
||||
|
||||
newres
|
||||
end
|
||||
end
|
||||
|
||||
# Find a resource given its original path
|
||||
|
|
Loading…
Reference in a new issue