Fix assets:precompile to be idempotent again

Each execution regenerates the manifest, so that we also need to rewrite the hashes.
This commit is contained in:
Sebastian Serth
2022-12-06 20:21:58 +01:00
parent 7debe371b3
commit 66921d92bb

View File

@ -48,11 +48,17 @@ namespace :assets do
end end
# Read the source map file and append the source map link # Read the source map file and append the source map link
existing_file_content = file.readlines existing_file_content = file.readlines.map(&:strip)
next if existing_file_content.blank? || existing_file_content[-1].include?(mapping_string)
new_content = existing_file_content + ["\n", mapping_string] if existing_file_content.blank? || existing_file_content[-1] == mapping_string
write_asset(file, new_content.join, manifest) # Just "restore" the integrity hash
mtime = Sprockets::PathUtils.stat(file)&.mtime
manifest[File.basename(file)].merge!(changed_manifest(existing_file_content.join("\n"), mtime))
else
# Append the source map link to the file
new_content = existing_file_content + [mapping_string]
write_asset(file, new_content.join("\n"), manifest)
end
end end
# We need to write the manifest file again to include the new integrity hashes # We need to write the manifest file again to include the new integrity hashes