class RequestStoreRails::Middleware
Public: Middleware
that takes care of setting a thread-local variable, which enables RequestLocals
to associate threads with the store for a request.
Public Class Methods
new(app)
click to toggle source
# File lib/request_store_rails/middleware.rb, line 9 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
Internal: Assigns a thread-local variable to identify the current store, and cleans up all the variables stored for the request once it finishes.
# File lib/request_store_rails/middleware.rb, line 15 def call(env) RequestLocals.set_current_store_id(extract_request_id(env)) @app.call(env) ensure RequestLocals.clear! RequestLocals.set_current_store_id(nil) end
Protected Instance Methods
extract_request_id(env)
click to toggle source
Internal: Extracts the request id from the environment, or generates one.
NOTE: We always generate an id to prevent accidental conflicts from an externally provided one, but subclasses of this middleware might override it.
# File lib/request_store_rails/middleware.rb, line 30 def extract_request_id(env) SecureRandom.uuid end