Rack là interface chuẩn giữa Ruby web framework và web server (Puma, Unicorn, Passenger). Mọi Rack app là một object có method call(env) trả về [status, headers, body].
Rails là một Rack application — khi Puma nhận request, nó gọi Rails app qua Rack interface.
# config.ru — entry point Rack
require_relative "config/environment"
run Rails.applicationMiddleware stack: Rails dùng Rack middleware chaining — mỗi middleware wrap request/response (logging, CSRF check, session, gzip compression, ...). Xem bằng rails middleware.
Hiểu Rack giúp debug middleware, viết custom middleware, và tích hợp với các Rack-compatible library như Warden (Devise dùng bên dưới).
Rack is a standard interface between Ruby web frameworks and web servers (Puma, Unicorn, Passenger). Every Rack app is an object with a call(env) method that returns [status, headers, body].
Rails is a Rack application — when Puma receives a request it calls the Rails app via the Rack interface.
# config.ru — Rack entry point
require_relative "config/environment"
run Rails.applicationMiddleware stack: Rails uses Rack middleware chaining — each middleware wraps the request/response (logging, CSRF check, session, gzip, ...). Inspect with rails middleware.
Understanding Rack helps debug middleware, write custom middleware, and integrate Rack-compatible libraries like Warden (used under the hood by Devise).