From 3e9f77f6c74c00a61e3b4a5ebdbb3780b6891d6c Mon Sep 17 00:00:00 2001 From: Sega100500 Date: Fri, 15 Jul 2022 12:04:28 +0500 Subject: [PATCH] Prevent non-digest relative path from being converted to root absolute path Prevent non-digest (not assets pipeline) relative path from being converted to root absolute path. Prevent convert url() in attached thrid-party css-styles libraries. --- .gitignore | 1 + lib/sprockets/rails/asset_url_processor.rb | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0fe058aa..1af6569e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ Gemfile*.lock tmp/ *.gem +.idea diff --git a/lib/sprockets/rails/asset_url_processor.rb b/lib/sprockets/rails/asset_url_processor.rb index 7adcb9e9..f3f84f2a 100644 --- a/lib/sprockets/rails/asset_url_processor.rb +++ b/lib/sprockets/rails/asset_url_processor.rb @@ -7,7 +7,14 @@ def self.call(input) context = input[:environment].context_class.new(input) data = input[:data].gsub(REGEX) do |_match| path = Regexp.last_match[:path] - "url(#{context.asset_path(path)})" + # original: "url(#{context.asset_path(path)})" + + # Prevent non-digest relative path from being converted to root absolute path + orig_path = path + path = context.asset_path(path) + path = (path == "/#{orig_path}") ? ".#{path}" : path + "url(#{path})" + end context.metadata.merge(data: data)