Files
discourse/lib/freedom_patches/propshaft_patches.rb

42 lines
1.1 KiB
Ruby

# frozen_string_literal: true
Propshaft::Asset.prepend(
Module.new do
def already_digested?
logical_path.to_s.start_with?("chunk.") || super
end
end,
)
Propshaft::Helper.prepend(
Module.new do
def compute_asset_path(path, options = {})
attempts = 0
super
rescue Propshaft::MissingAssetError => e
if Rails.env.development?
# Ember-cli might've replaced the assets
Rails.application.assets.load_path.send(:clear_cache)
attempts += 1
retry if attempts < 3
elsif Rails.env.test?
# Assets might not be compiled in test mode. Just return a fake path
"/assets/#{path.sub(".", "-aaaaaaaa.")}"
else
raise e
end
end
end,
)
Propshaft::Compiler::SourceMappingUrls.prepend(
Module.new do
def source_mapping_url(*args)
# Propshaft insists on converting sourcemap URLs to absolute paths. We want to keep
# relative paths so that we can serve assets from different subdirectories without needing
# to recompile them
super.gsub(%r{sourceMappingURL=\S+/([^/]+\.map)}, 'sourceMappingURL=\1')
end
end,
)