diff --git a/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb b/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb index 911ee21256..f68cdd1ca1 100644 --- a/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb +++ b/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb @@ -2,12 +2,17 @@ module PageflowScrolled # @api private module WebpackPublicPathHelper def scrolled_webpack_public_path_script_tag - content_tag(:script, WebpackPublicPathHelper.js_snippet.html_safe) + content_tag(:script, WebpackPublicPathHelper.js_snippet(request).html_safe) end - def self.js_snippet - asset_host = Rails.configuration.action_controller.asset_host + def self.js_snippet(request = nil) + config_host = Rails.configuration.action_controller.asset_host packs_dir = Webpacker.config.public_output_path.basename + asset_host = if config_host.respond_to?(:call) + config_host.call(packs_dir, request) + else + config_host + end "var __webpack_public_path__ = '#{asset_host}/#{packs_dir}/';" end diff --git a/entry_types/scrolled/spec/helpers/pageflow_scrolled/webpack_public_path_helper_spec.rb b/entry_types/scrolled/spec/helpers/pageflow_scrolled/webpack_public_path_helper_spec.rb index 7c838a8035..71d07afba6 100644 --- a/entry_types/scrolled/spec/helpers/pageflow_scrolled/webpack_public_path_helper_spec.rb +++ b/entry_types/scrolled/spec/helpers/pageflow_scrolled/webpack_public_path_helper_spec.rb @@ -11,6 +11,22 @@ module PageflowScrolled visible: false, text: "var __webpack_public_path__ = '/packs-test/';") end + + it 'can deal with proc asset host' do + allow(Rails.configuration.action_controller).to receive(:asset_host) + .and_return(lambda do |source, request = nil, *_| + '2' + source.to_s if request && source + end) + + html = helper.scrolled_webpack_public_path_script_tag + + expect(html) + .to have_selector( + 'script', + visible: false, + text: "var __webpack_public_path__ = '2packs-test/packs-test/';" + ) + end end end end