webpack-rails icon indicating copy to clipboard operation
webpack-rails copied to clipboard

URLs are not supported in production public_path due to leading slash

Open gkaemmer opened this issue 8 years ago • 3 comments

Hello! Loving webpack-rails, really has been a game changer getting our code migrated away from sprockets.

We deliver our assets from a CDN, so it makes sense for us to define config.webpack.public_path = '//cdn.url.com/assets/webpack'. The problem with this is that manifest.rb always adds a slash before the public path.

Weirdly, the resulting URLs (like "///sub.domain.com/assets/webpack/app.js") work in most browsers, but not all! In IE11 and other old browsers, the public path gets parsed incorrectly, prevent the assets from being loaded.

A workaround is removing one (but not both) of the leading slashes on our CDN url. But this is pretty weird. Is there another way to tell webpack to load assets from another domain?

gkaemmer avatar Feb 23 '17 21:02 gkaemmer

Hm, not off the top of my head. If you can think of a way to solve this without making our configuration more complex than it already is, submit a PR or suggestion.

mipearson avatar Feb 23 '17 23:02 mipearson

Cool. I'll take a look soon. I think that doing some simple checks on Rails.configuration.webpack.public_path would be sufficient:

is_url = Rails.configuration.webpack.public_path =~ /^(https?:)?\/\//
# Add slash unless is_url

gkaemmer avatar Feb 24 '17 00:02 gkaemmer

We also use CDN for our frontend assets but do not configure webpack with any of it. Instead, we rely on the rails assets host to be configured properly. I think that should suffice for your case as well.

juanca avatar Feb 24 '17 01:02 juanca