class Webpacker::Pwa::DevServerProxy

Public Class Methods

new(app = nil, opts = {}) click to toggle source
Calls superclass method
# File lib/webpacker/pwa/dev_server_proxy.rb, line 7
def initialize(app = nil, opts = {})
  @webpacker = opts.delete(:webpacker) || Webpacker.instance
  opts[:streaming] = false if Rails.env.test? && !opts.key?(:streaming)
  super
end

Public Instance Methods

perform_request(env) click to toggle source
Calls superclass method
# File lib/webpacker/pwa/dev_server_proxy.rb, line 13
def perform_request(env)
  service_workers_entry_path = dev_server.config.send(:fetch, :service_workers_entry_path)
  return unless service_workers_entry_path.present?
  service_workers_folder = dev_server.config.source_path.join(service_workers_entry_path)
  service_workers = Dir[service_workers_folder.join('*')].map { |e| "/#{File.basename(e)}" }
  if (service_workers.include?(env["PATH_INFO"])) && dev_server.running?
    env["HTTP_HOST"] = env["HTTP_X_FORWARDED_HOST"] = dev_server.host
    env["HTTP_X_FORWARDED_SERVER"] = dev_server.host_with_port
    env["HTTP_PORT"] = env["HTTP_X_FORWARDED_PORT"] = dev_server.port.to_s
    env["HTTP_X_FORWARDED_PROTO"] = env["HTTP_X_FORWARDED_SCHEME"] = dev_server.protocol
    unless dev_server.https?
      env["HTTPS"] = env["HTTP_X_FORWARDED_SSL"] = "off"
    end
    env["SCRIPT_NAME"] = ""

    super(env)
  else
    @app.call(env)
  end
end

Private Instance Methods

config() click to toggle source
# File lib/webpacker/pwa/dev_server_proxy.rb, line 36
def config
  @webpacker.config
end
dev_server() click to toggle source
# File lib/webpacker/pwa/dev_server_proxy.rb, line 40
def dev_server
  @webpacker.dev_server
end