You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
995 B
30 lines
995 B
# frozen_string_literal: true |
|
|
|
module PremailerBundledAssetStrategy |
|
def load(url) |
|
if ViteRuby.instance.dev_server_running? |
|
# Request from the dev server |
|
return unless url.start_with?("/#{ViteRuby.config.public_output_dir}/") |
|
|
|
headers = {} |
|
# Vite dev server wants this header for CSS files, otherwise it will respond with a JS file that inserts the CSS (to support hot reloading) |
|
headers['Accept'] = 'text/css' if url.end_with?('.scss', '.css') |
|
|
|
Net::HTTP.get( |
|
URI("#{ViteRuby.config.origin}#{url}"), |
|
headers |
|
).presence |
|
else |
|
url = url.delete_prefix(Rails.configuration.action_controller.asset_host) if Rails.configuration.action_controller.asset_host.present? |
|
url = url.delete_prefix('/') |
|
path = Rails.public_path.join(url) |
|
return unless path.exist? |
|
|
|
path.read |
|
end |
|
rescue ViteRuby::MissingEntrypointError |
|
# If the path is not in the manifest, ignore it |
|
end |
|
|
|
module_function :load |
|
end
|
|
|