Tag
Rails
7 posts on this topic.
-
A deadlock Postgres can't see
A Rails migration waited forever on a lock held by its own transaction, through a second connection pool. Why Postgres' deadlock detector can't catch that, how to spot it in pg_stat_activity, and why the logs were empty.
-
Why parallel deploys waited on each other
Several Railyard deploys at once queued behind each other and froze the dashboard. The shared resources one kind of work could fill, how I split them, and the two bugs the fixes created.
-
One door for every deploy
Railyard had nineteen places that could start a deploy, each with its own copy of the rules. How I moved every one of them behind a single model method, and the table-driven test that keeps them there.
-
Why my Rails dashboard took two seconds to load
A performance postmortem on Railyard's Rails and Hotwire control plane: an image build on the live box, a hidden tab that streamed logs into Solid Cable, and a page that rendered fourteen hidden tabs to show one.
-
Moving Railyard's control plane from Fly.io to one EC2 box
Why the Railyard control plane needed four Fly machines and a dedicated IPv4, how it runs now on one Graviton EC2 instance with RDS and Caddy, and the cache-table bug that returned 500 on every request after the cutover.
-
Hardening a deploy platform against apps I didn't write
How I harden Railyard against open-source Rails apps: deploy each one unmodified, group the failures into classes, fix the class on its second occurrence, and only call something fixed when a fresh build reproduces it.
-
Why Railyard is a Rails app and a Go agent joined by one proto file
Railyard splits into a Rails control plane that decides and a Go agent that does the work on each server, joined by a gRPC contract. How the contract is laid out, how build logs stream, and what the split costs.