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.



165
166
167
# File 'lib/magick/rails/railtie.rb', line 165

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



169
170
171
172
173
174
175
176
177
# File 'lib/magick/rails/railtie.rb', line 169

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