Class: BunBunBundle::DevCacheMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/bun_bun_bundle/dev_cache_middleware.rb

Overview

Rack middleware that sets no-cache headers on asset requests in development.

This ensures the browser always fetches fresh assets during development, avoiding stale-cache issues when files are rebuilt.

Usage:

# In Rails:
# Automatically added by the Railtie in development.

# In Hanami:
# Automatically added by the Hanami integration in development.

# Manual Rack usage:
use BunBunBundle::DevCacheMiddleware

Constant Summary collapse

ASSET_EXTENSIONS =
%w[
  .js .css .map .json
  .png .jpg .jpeg .gif .svg .webp
  .woff .woff2 .ttf .eot
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ DevCacheMiddleware

Returns a new instance of DevCacheMiddleware.



27
28
29
# File 'lib/bun_bun_bundle/dev_cache_middleware.rb', line 27

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/bun_bun_bundle/dev_cache_middleware.rb', line 31

def call(env)
  status, headers, body = @app.call(env)

  if asset_request?(env['PATH_INFO'])
    headers['Cache-Control'] = 'no-store, no-cache, must-revalidate'
    headers['Expires'] = '0'
  end

  [status, headers, body]
end