Rails boot sequence

As I was having issues with a misbehaving gem, I needed to demystify Rails’ boot sequence for myself. As a (brief) web search also didn’t return many visual resources, I made a summary of Xavier Noria’s talk.

Rails boot process

To summarize in words:

  1. Define load paths for deps (Bundle.setup)
  2. Load rails/all (railties of Rails components)
  3. Load gem deps (Bundle.require)
  4. Define the Application class
  5. Define assorted paths (autoload etc.) #Rails.application.initialize!
  6. Load config/environments/#{Rails.env}.rb
  7. Load initializers in config/initializers
  8. Eager load application (if nil). Happens by default in production mode.
  9. Load config/routes.rb
  10. Run command hooks (if needed).