Skip to main content

middleware_stack_inspection

🔍 Middleware Stack Inspection and Modification at Runtime

Advanced debugging may require inspecting or modifying the middleware stack on the fly. Use Rails.application.middleware to list, insert, delete, or swap middlewares dynamically, even in a console or during an initializer.

# Inspect current stack
Rails.application.middleware.each_with_index do |middleware, index|
puts "#{index}: #{middleware.klass} (args: #{middleware.args})"
end

# Remove a middleware
Rails.application.middleware.delete Rack::Runtime

# Swap two middlewares
stack = Rails.application.middleware
runtime_index = stack.index { |m| m.klass == Rack::Runtime }
logger_index = stack.index { |m| m.klass == Rails::Rack::Logger }
stack.swap(runtime_index, logger_index) if runtime_index && logger_index