Class: RailsWayback::BarMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_wayback/bar_middleware.rb

Overview

Rack middleware that appends the wayback bar to every successful or client-error HTML response of the host application while the gem is enabled. Only complete, bounded Rack-buffered documents are transformed; streaming and otherwise unsafe responses pass through.

Constant Summary collapse

UNSAFE_STATUSES =
[204, 205, 206].freeze
UNSAFE_RESPONSE_HEADERS =
%w[
  transfer-encoding
  content-range
  rack.hijack
  x-sendfile
  x-accel-redirect
].freeze
INVALIDATED_RESPONSE_HEADERS =
%w[
  etag
  content-md5
  digest
  content-digest
  repr-digest
  content-range
  accept-ranges
].freeze
SKIP_PATH_PREFIXES =
%w[
  /assets
  /packs
  /rails/
  /cable
  /rails-wayback
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ BarMiddleware

Returns a new instance of BarMiddleware.



40
41
42
# File 'lib/rails_wayback/bar_middleware.rb', line 40

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



44
45
46
47
48
49
# File 'lib/rails_wayback/bar_middleware.rb', line 44

def call(env)
  tracker = RailsWayback::RenderTracker.new
  RailsWayback::RenderContext.with(tracker) { call_with_tracker(env, tracker) }
ensure
  tracker&.close
end