diff --git a/lib/sprockets/rails/sourcemapping_url_processor.rb b/lib/sprockets/rails/sourcemapping_url_processor.rb index fe8a29cc..1564a02d 100644 --- a/lib/sprockets/rails/sourcemapping_url_processor.rb +++ b/lib/sprockets/rails/sourcemapping_url_processor.rb @@ -2,7 +2,7 @@ module Sprockets module Rails # Rewrites source mapping urls with the digested paths and protect against semicolon appending with a dummy comment line class SourcemappingUrlProcessor - REGEX = /\/\/# sourceMappingURL=(.*\.map)/ + REGEX = /\/\/# sourceMappingURL=(?:.*\/)?(.*\.map)/ class << self def call(input) diff --git a/test/test_sourcemapping_url_processor.rb b/test/test_sourcemapping_url_processor.rb index ead7c33a..33fbfb78 100644 --- a/test/test_sourcemapping_url_processor.rb +++ b/test/test_sourcemapping_url_processor.rb @@ -23,6 +23,26 @@ def asset_path(path, options = {}) assert_equal({ data: "var mapped;\n//# sourceMappingURL=/assets/mapped-HEXGOESHERE.js.map\n//!\n" }, output) end + def test_removing_path_prefix + @env.context_class.class_eval do + def resolve(path, **kargs) + if path == 'mapped.js.map' + "/assets/mapped.js.map" + else + raise Sprockets::FileNotFound + end + end + + def asset_path(path, options = {}) + "/assets/mapped-HEXGOESHERE.js.map" + end + end + + input = { environment: @env, data: "var mapped;\n//# sourceMappingURL=/some/prefix/mapped.js.map", name: 'mapped', filename: 'mapped.js', metadata: {} } + output = Sprockets::Rails::SourcemappingUrlProcessor.call(input) + assert_equal({ data: "var mapped;\n//# sourceMappingURL=/assets/mapped-HEXGOESHERE.js.map\n//!\n" }, output) + end + def test_resolving_erroneously_without_map_extension @env.context_class.class_eval do def resolve(path, **kargs)