Trace what happens when you run `rails server`! From Rails boot to Puma launch, uncover how components load, signals fire, plugins initialize, and requests are handled.
if Object.const_defined?(:Rackup) && ::Rackup.const_defined?(:Handler) module Rackup module Handler module Puma class << self include ::Puma::RackHandler end end register :puma, Puma end end else do_register = Object.const_defined?(:Rack) && ::Rack.release < '3' module Rack module Handler module Puma class << self include ::Puma::RackHandler end end end end ::Rack::Handler.register(:puma, ::Rack::Handler::Puma) if do_register end
# rackup was removed in Rack 3, it is now a separate gem if Object.const_defined?(:Rackup) && ::Rackup.const_defined?(:Handler) module Rackup module Handler module Puma class << self include ::Puma::RackHandler end end register :puma, Puma end end else do_register = Object.const_defined?(:Rack) && ::Rack.release < '3' module Rack module Handler module Puma class << self include ::Puma::RackHandler end end end end ::Rack::Handler.register(:puma, ::Rack::Handler::Puma) if do_register end