Skip to content

Commit 05dbab2

Browse files
authored
Strip away the relative path (#482)
Fixes #478
1 parent dcdf365 commit 05dbab2

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/sprockets/rails/asset_url_processor.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ module Sprockets
22
module Rails
33
# Rewrites urls in CSS files with the digested paths
44
class AssetUrlProcessor
5-
REGEX = /url\(\s*["']?(?!(?:\#|data|http))([^"'\s)]+)\s*["']?\)/
6-
5+
REGEX = /url\(\s*["']?(?!(?:\#|data|http))(?<relativeToCurrentDir>.\/)?(?<path>[^"'\s)]+)\s*["']?\)/
76
def self.call(input)
87
context = input[:environment].context_class.new(input)
9-
data = input[:data].gsub(REGEX) { |_match| "url(#{context.asset_path($1)})" }
8+
data = input[:data].gsub(REGEX) do |_match|
9+
path = Regexp.last_match[:path]
10+
"url(#{context.asset_path(path)})"
11+
end
1012

1113
context.metadata.merge(data: data)
1214
end

test/test_asset_url_processor.rb

+13
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,17 @@ def test_dependencies_are_tracked
4848
assert_equal(1, output[:links].size)
4949
assert_equal(@logo_uri, output[:links].first)
5050
end
51+
52+
def test_relative
53+
input = { environment: @env, data: 'background: url(./logo.png);', filename: 'url2.css', metadata: {} }
54+
output = Sprockets::Rails::AssetUrlProcessor.call(input)
55+
assert_equal("background: url(/logo-#{@logo_digest}.png);", output[:data])
56+
end
57+
58+
def test_subdirectory
59+
input = { environment: @env, data: "background: url('jquery/jquery.js');", filename: 'url2.css', metadata: {} }
60+
output = Sprockets::Rails::AssetUrlProcessor.call(input)
61+
jquery_digest = 'c6910e1db4a5ed4905be728ab786471e81565f4a9d544734b199f3790de9f9a3'
62+
assert_equal("background: url(/jquery/jquery-#{jquery_digest}.js);", output[:data])
63+
end
5164
end

0 commit comments

Comments
 (0)