31 lines
		
	
	
		
			995 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			995 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# 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
 |