Class: Magick::SubscriberMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/magick/rails/railtie.rb

Overview

Ensures each process (including Puma workers forked under preload_app!) has a live Redis Pub/Sub subscriber for cross-process cache invalidation. ensure_subscriber! returns immediately once @owner_pid == Process.pid, so the per-request cost is a single pid comparison after the first call.

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ SubscriberMiddleware

Returns a new instance of SubscriberMiddleware.



168
169
170
# File 'lib/magick/rails/railtie.rb', line 168

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



172
173
174
175
176
177
178
179
180
# File 'lib/magick/rails/railtie.rb', line 172

def call(env)
  begin
    registry = Magick.adapter_registry
    registry.ensure_subscriber! if registry.respond_to?(:ensure_subscriber!)
  rescue StandardError
    # Best-effort: never break a request over subscriber bookkeeping.
  end
  @app.call(env)
end