I’m Kayla. I build little Rails apps for real people. Class sign-ups, a tiny store, a recipe site for my aunt. I’ve moved them across hosts more times than I’d like to admit. Some moves were smooth. Some made me sweat. For the blow-by-blow notes of how each environment behaved, check out my extended case study.
You want the real stuff? Cool. I’ll tell you what I used, what broke, what felt calm, and what cost me too much.
What I tested (and actually used)
- Heroku
- Fly.io
- Render
- Hatchbox + a VPS (DigitalOcean and Hetzner)
- AWS Elastic Beanstalk
- DigitalOcean App Platform
- MRSK on plain servers
- Passenger on shared hosting (yep, the old way)
I didn’t just click around. I shipped code, ran Sidekiq, scheduled jobs, set up SSL, and kept Postgres alive.
Quick picks, no fluff
- Fastest to get live: Heroku
- Best balance of price and control: Render
- Global, low-cost, feels modern: Fly.io
- Rails-first stack you control: Hatchbox + VPS
- Big traffic, stricter teams: AWS Elastic Beanstalk
- DIY and cheap, but needs chops: MRSK on VPS
- For very small things only: DigitalOcean App Platform
- Don’t do this for new apps: Shared hosting with Passenger
If you’re still comparing hosts, take a peek at WebSpaceHost for a clear rundown of plans that scale from hobby projects to heavy traffic apps.
If you’re hunting for broader benchmarks, my separate report on Rails web hosting options might save you some tabs.
For even wider context, the Better Stack Community’s “Top 10 Heroku Alternatives for 2025” and BoltOps’ “Heroku vs Render vs Vercel vs Fly.io vs Railway: Meet Blossom, an Alternative” both break down the strengths, weaknesses, and pricing of today’s leading Rails-friendly platforms.
You know what? There’s no single “best.” But there’s a best for your stage. Let me explain with real runs.
Heroku: so easy it feels like cheating
My aunt’s recipe site lived on Heroku first. It was a small Rails 7 app with Turbo, Postgres, Sidekiq, and image uploads to S3. I pushed code. It built. It ran. SSL? Click. Background worker? Click. I used Pipelines for review apps, which made my changes feel safe.
- What I loved: the peace. Logs are clean. Rollbacks are a snap. Add-ons are simple.
- What stung: the bill. When the free tier went away, a tiny hobby site felt pricey. For a client shop with revenue? Fine. For a side project? Ouch.
- Little snag: boot time on smaller dynos was slow during cold starts. Not a deal breaker, just annoying during demos.
If you want less fuss and you’ve got a budget, Heroku is still sweet.
Render: my “default yes” for new Rails apps
I moved a small nonprofit app to Render in 2023. It had a web service, a worker, a cron job, plus managed Postgres. My deploys came from Git. I liked how Render’s YAML stayed readable. Sidekiq ran with zero drama. The Postgres backups felt sane.
- What I loved: pricing is fair for what you get. Blue-green deploys felt calm. Built-in cron jobs are easy.
- What stung: cold starts on the lowest plan. Also, deploys could take a few minutes with node and yarn in the mix.
- Support: when I hit a build cache bug, I got a same-day reply that actually helped.
For most Rails folks who want simple, steady, and not too pricey, Render hits the sweet spot.
Fly.io: fast, global, and a bit quirky
I moved a class booking app to Fly.io. Docker image builds were fast. I ran it near my users (ord and sea). The app felt snappy. I used Fly Postgres for a bit, then moved to a managed Postgres elsewhere when I wanted bigger backups.
- What I loved: speed per dollar is strong. Global regions are a treat. Private networking is neat.
- What stung: memory tuning. My first 512 MB machine kept getting OOM kills when Sidekiq got busy. Bumped to 1 GB and it calmed down.
- Gotcha: logs felt noisy at times. Also, volumes for Active Storage took a bit of care.
If you’re comfy with Docker and like low latency, Fly feels fresh and fast. I originally picked Fly when I was hosting a clutch of Denver-based sites and needed snappy regional response times—there’s a short write-up of that adventure if you’re curious.
Hatchbox + VPS: feels like home for Rails people
For a real estate listings app, I used Hatchbox on a small DigitalOcean droplet. Hatchbox set up Nginx, Puma, Ruby, Node, Redis, Sidekiq, SSL, the works—without me babysitting configs. I still had root access, which I like when I need to peek.
- What I loved: Rails-first all the way. Deploys are solid. SSH when you need it. Rolling restarts didn’t drop users.
- What stung: you still run a server. Patching, disk space, and restarts? That’s yours. It’s not hard, but it’s on you.
- Price feel: a $12–$18 VPS plus Hatchbox fee handled steady traffic just fine.
Great for folks who want control without living in config hell.
AWS Elastic Beanstalk: it scaled, but wow, the knobs
A store I helped with had a big holiday rush. They needed AWS. Elastic Beanstalk did the job with autoscaling. It ran Puma on EC2 behind a load balancer. We piped logs to CloudWatch, used RDS Postgres, and it kept pace under load.
- What I loved: it scaled on traffic spikes. IAM and VPC meant the security team slept well.
- What stung: debugging was slow. When deploys hung, I had to chase logs across services. Costs can creep if you don’t watch them.
If you have strict infra rules or heavy traffic, this can be the right road. Just block time for setup and guard rails.
DigitalOcean App Platform: nice for tiny apps
I put a little helpdesk tool there. It built from Git, used a simple Dockerfile, and ran fine. Postgres was managed. Cron tasks worked.
- What I loved: simple UI. Good docs. Price not scary for a small app.
- What stung: build times felt slow some days. Also, Sidekiq needed extra tweaks to handle concurrency right.
I’d use it for very small apps or internal tools. Past that, I pick Render or Fly.
MRSK on plain servers: power with a side of chores
I deployed a private SaaS with MRSK to two Hetzner boxes. Docker, Traefik, zero-downtime deploys. It felt clean and fast. I liked that my image came from the same build I tested.
- What I loved: full control, low cost, fast deploys.
- What stung: you own everything. Backups, monitoring, fails, cert renewals. I set up pg_dump jobs and watched them like a hawk.
- Tip: plan your volumes for Postgres and uploads. Don’t wing it.
This path is great if you enjoy servers. If not, Render or Hatchbox is kinder.
Passenger on shared hosting: I tried it, then moved on
Years ago, I ran a small community site on shared hosting with Passenger. It ran, but every change felt fragile. Bundler versions, system packages, weird restarts—it wore me out.
- What I learned: cheap now can cost you later. I would not start a new Rails app this way today.
Real-world checks: things that tripped me up
- Sidekiq memory: on tiny plans, workers crash first. Give them room.
- Cron jobs: don’t forget them. Render’s cron or Heroku’s scheduler is easy; elsewhere, use crontab or a worker.
- Assets: Rails 7 with import maps is simple; if you use esbuild or Webpack, cache your node modules to speed builds.
- Storage: for uploads, use S3 or a similar bucket. Local volumes can bite you on deploys.
- Postgres: backups matter. I do daily dumps and test restore once a month. Yes, test it.
Honestly, I’ve learned the hard way. You can learn the soft way.
Thinking about layering AI-driven chat or role-play features on top of your Rails stack? Use cases range from customer support to more adult-oriented experiences. For a peek into the latter, read this detailed walkthrough on [building and operating an AI sexting chatbot](https
