The Wire · Showcase
RAILS FIXES ACTIONMAILER CALLBACK CONSISTENCY, SPRING CLIENT GETS SMARTER ABOUT SERVER STATE
By RepoJournal · Filed · About Rails
ActionMailer callbacks now support only: and except: options, closing the gap with ActionController, while Spring's client learns to handle stale sockets and preloading delays.
Rails merged support for only: and except: on _deliver callbacks in ActionMailer [1], resolving inconsistency introduced in earlier callback work. The fix uses the same normalization wrapper from AbstractController, keeping Rails' callback behavior uniform across the framework. Separately, ActiveStorage got its test coverage tightened with dedicated unit tests for Variation [2], a core value object that was previously only covered indirectly through integration tests. More critically, a race condition in ActiveStorage::Blob#metadata updates that could corrupt data on GCS has been offloaded to background workers [3], eliminating synchronous collisions between servers and workers. On the Spring side, the client is now smarter about detecting stale server state [5]: it retries with extended timeout when finding a socket but hitting version handshake failures during app preload, and checks process existence before reusing stale pidfiles. Dev Container support also shipped with bundler-cache feature [4], speeding up repeated container startup by persisting gem installations.
Action items
- → If you use ActiveStorage on cloud services (GCS, S3), upgrade to capture the metadata sync fix [ref:3] rails/rails [plan]
- → Review ActionMailer callback usage to confirm you're not relying on ignored only:/except: filters rails/rails [monitor]
- → Update Spring to get smarter socket retry logic if you hit Spring boot timeouts in CI or containerized environments rails/spring [plan]
References
- [1] Support `only:` and `except:` on `_deliver` callbacks in ActionMailer ↗ rails/rails
- [2] Add unit tests for ```ActiveStorage::Variation``` ↗ rails/rails
- [3] Offload ActiveStorage::Blob#metadata sync to background ↗ rails/rails
- [4] Add bundler-cache feature in dev container. rails/rails
- [5] Make client smarter about Spring server state ↗ rails/spring
FAQ
- What changed in Rails on June 9, 2026?
- ActionMailer callbacks now support only: and except: options, closing the gap with ActionController, while Spring's client learns to handle stale sockets and preloading delays.
- What should Rails teams do about it?
- If you use ActiveStorage on cloud services (GCS, S3), upgrade to capture the metadata sync fix [ref:3] • Review ActionMailer callback usage to confirm you're not relying on ignored only:/except: filters • Update Spring to get smarter socket retry logic if you hit Spring boot timeouts in CI or containerized environments
- Which Rails repositories shipped on June 9, 2026?
- rails/rails, rails/spring