Rails 8 Is Here: The No-PaaS Default Stack Explained
Rails 8 ships with Kamal 2, Solid Queue, Solid Cache and Propshaft, making a database-only, deploy-anywhere stack the default. Here is what changes.
Rails 8 doubles down on the idea that a single developer should be able to build and ship a production app without a platform team. The release makes Kamal 2, Solid Queue, and Solid Cache first-class, so you can run real workloads on a plain server with nothing but a database.
The Solid trifecta
Solid Queue, Solid Cache, and Solid Cable move background jobs, caching, and websockets onto your SQL database. That removes Redis and a separate job backend from the default footprint, which is a meaningful reduction in moving parts for most apps.
For teams that previously reached for Sidekiq plus Redis on day one, this is a quiet but large simplification. You still can swap in Redis later, but you no longer have to start there.
- Solid Queue — durable background jobs in the DB
- Solid Cache — disk-backed cache that survives restarts
- Solid Cable — Action Cable without Redis
Kamal 2 and zero-downtime deploys
Kamal 2 deploys Docker containers to any host you can SSH into, with a built-in proxy (Thruster/kamal-proxy) that handles TLS and zero-downtime rollouts. The mental model is deliberately boring: build an image, push it, boot the new containers, drain the old ones.
kamal setup
kamal deploy
kamal app logs -f
The result is that a $6 VPS can host a real Rails app with HTTPS and rolling deploys, no managed platform required. That is a genuine cost and control win for small teams.
Should you upgrade?
If you are on Rails 7.1+, the upgrade is mostly mechanical. The bigger decision is whether to adopt the Solid adapters. For new apps, start with them; for existing apps under load, migrate one subsystem at a time and measure.
Rails 8 is less about new syntax and more about making the cheap, simple deployment path the default one.
Why this matters in real projects
It is easy to treat rails 8 as a checkbox, but in production the details decide whether a system stays maintainable. Teams that invest early in getting rails 8 right spend far less time later untangling incidental complexity, because the foundations hold up as the codebase and the team grow.
In the context of ruby on rails, the cost of a poor decision compounds quietly. A shortcut that saves an afternoon can cost weeks once it is woven through dozens of files and several people's mental models. The patterns described above are popular precisely because they keep that compounding cost in check and keep change cheap.
There is also a human dimension that is easy to overlook. Code is read far more often than it is written, and the clarity of your approach to rails 8 directly shapes how quickly a new teammate becomes productive. When the structure mirrors how people already think about the problem, onboarding shrinks from weeks to days and reviews become conversations about intent rather than archaeology.
Going deeper
Once the basics are in place, the next gains come from understanding the trade-offs rather than memorising rules. Rails 8 is not free: every abstraction you introduce buys flexibility in one direction while adding a layer to reason about in another. The teams that do this well make those trade-offs consciously, write them down, and revisit them when the constraints change. That habit of deliberate decision-making is what separates a codebase that ages gracefully from one that calcifies.
It helps to keep a short feedback loop between a change and its effect. Whether that loop is a fast test suite, a metric on a dashboard, or a teammate's review, the goal is the same: shorten the distance between a decision and the evidence about whether it was a good one. When that distance is small, you can move quickly with confidence; when it is large, even careful teams drift.
How this fits a modern stack
Ruby on Rails rarely lives in isolation. In a typical Nextware project it sits alongside a typed full-stack codebase, a CI pipeline that runs on every pull request, and a deployment process that favours small, frequent releases over big-bang launches. The ideas in this article are written with that reality in mind, so they slot into an existing workflow rather than demanding a rewrite.
The combination of rails 8 and kamal, applied with restraint, tends to produce systems that are both pleasant to work in and cheap to change. That is the bar worth aiming for: not the cleverest possible solution, but the one your team can extend safely a year from now without rediscovering why every decision was made.
Common pitfalls to avoid
Most of the trouble we see is not exotic. It comes from a small set of recurring mistakes that are obvious in hindsight and invisible under deadline pressure.
- Optimising before measuring — changing rails 8 based on a hunch instead of a profile or a metric.
- Hidden coupling — letting kamal leak across boundaries until nothing can change in isolation.
- Skipping tests for the parts that matter most, then paying for it during the next refactor.
- Copying a pattern from a much larger company without their constraints, and inheriting the overhead without the benefit.
A practical checklist
- Write down the problem you are actually solving before reaching for rails 8.
- Start with the simplest approach that could work, and add structure only when a real pain appears.
- Make the change observable — logs, metrics, or tests — so you can tell whether it helped.
- Document the decision briefly so the next person understands the trade-off.
Key takeaways
- Ruby on Rails rewards simplicity; complexity should be earned, not assumed.
- Rails 8 and Kamal pay off most when applied deliberately at the right boundary.
- Measure, then optimise — never the other way around.
- Optimise for the team that maintains this in six months, including future you.
Wrapping up
None of this requires heroics. The teams that ship reliable software are usually the ones that keep their tools boring, their boundaries clear, and their feedback loops fast. Apply the ideas here incrementally, keep what works for your context, and discard what does not.
If you are building something in this space at Nextware Systems or elsewhere, the best next step is to pick one concrete improvement from the checklist above and ship it this week. Small, measured changes compound into systems that are a pleasure to work in — and that is the whole point.
Related resources
Related posts

Ruby on Rails Upgrade Services: How Nextware Systems Modernizes Legacy Rails Applications Without Breaking Production
Is Your Ruby on Rails Application Falling Behind?
Read more
Hotwire in Practice: Turbo Frames vs Turbo Streams
When to reach for a Turbo Frame, when to broadcast a Turbo Stream, and how to keep a Hotwire app fast and debuggable.
Read more
Scaling a Rails Monolith Without Microservices
Rails monoliths scale further than the internet admits. Service objects, good indexes, and background jobs get you remarkably far.
Read moreTrending posts

Ruby on Rails Upgrade Services: How Nextware Systems Modernizes Legacy Rails Applications Without Breaking Production
Is Your Ruby on Rails Application Falling Behind?
Read more
Hotwire in Practice: Turbo Frames vs Turbo Streams
When to reach for a Turbo Frame, when to broadcast a Turbo Stream, and how to keep a Hotwire app fast and debuggable.
Read more
Scaling a Rails Monolith Without Microservices
Rails monoliths scale further than the internet admits. Service objects, good indexes, and background jobs get you remarkably far.
Read moreChoosing a Vector Database for AI Search
pgvector, Pinecone, Qdrant, Weaviate — how to pick a vector store based on scale, filtering needs, and operational appetite.
Read morePopular posts
Background Jobs in Rails 8 with Solid Queue
Solid Queue brings durable, database-backed jobs to Rails by default. Setup, recurring tasks, and when you still want Sidekiq.
Read moreServer Components in Next.js 15: A Practical Mental Model
RSC changes where code runs. A working mental model for fetching, the client boundary, and shipping less JavaScript.
Read moreDeploying with Docker and Kamal on a Plain VPS
Containerize once and deploy anywhere you can SSH. Kamal brings zero-downtime deploys and TLS to a cheap server.
Read more
0 Comments
Sign in to join the conversation.
Sign-in is not configured yet.