The Wire · Showcase
SPRING STOPS CRASHING ON SLOW BOOTS, RAILS PATCHES VIEW RELOADER
By RepoJournal · Filed · About Rails
Spring 4.5.0 fixes the Errno::EPIPE crashes that kill processes when clients disconnect during preload, a critical stability issue for large monorepos that take >5 seconds to boot.
The Spring release [1] addresses a years-old reliability problem: when a client times out waiting for the preloader to finish (default 5 second window), unrescued socket writes [2] crash both the server and application processes. Shopify's monorepo made this reproducible on every slow boot. The same release adds post-environment-load hooks [1] and eagerly preloads framework base classes before the parent process forks, preventing side effects during first request. Meanwhile, Rails merged a ViewReloader fix [3] that stops constructing empty FileUpdateCheckers on every engine boot — a performance win for apps with lazy view paths. The ecosystem also landed a minitest compatibility fix [4] for request format assertions that broke when minitest changed how assert_nil works under the hood.
One email a day. Unsubscribe in one click.
Keep up with Rails in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Upgrade spring to 4.5.0 immediately if you see EPIPE crashes on slow boots rails/spring [immediate]
- → Update rails main branch to pick up ViewReloader optimization before next release rails/rails [monitor]
- → Verify request format tests pass with latest minitest if you override assert_nil rails/rails [plan]
References
- [1] v4.5.0 ↗ rails/spring
- [2] Don't crash on client disconnect (Server and Application) ↗ rails/spring
- [3] Defer ViewReloader build when no view paths are registered ↗ rails/rails
- [4] Avoid assert_nil for Mime::NullType request format ↗ rails/rails