https://gklsan.medium.com/ruby-on-rails-interview-questions-and-answers-middleware-part-1-8cf09bc30cf2