Deploy guide · runtime = "docker"
Ship Rails (Ruby) in ~2 minutes.
Ruby on Rails is the original convention-over-configuration fullstack framework. The Percher template ships a minimal Rack app; upgrade to full Rails with `rails new . --force`.
Why Percher fits
- Long-running Puma in front of Caddy is the canonical Rails production setup — no Lambda-style workarounds.
- Point ActiveRecord's `DATABASE_URL` at any external Postgres provider (Neon, Supabase, your own) and the connection is handled by Percher's outbound proxy.
Quick start
bunx percher create my-app --template rails
cd my-app
bunx percher publishThe first command scaffolds a working Rails (Ruby) project plus a percher.toml. Publish builds and deploys it, then prints the live URL.
percher.toml
The canonical config for a Rails (Ruby) app on Percher. bunx percher init generates this automatically when it detects Rails (Ruby) in your project.
[app]
name = "my-app"
runtime = "docker"
framework = "rails"
[web]
port = 8080
health = "/"
Common gotchas
- Percher doesn't provision a managed Postgres today. Set `DATABASE_URL` via `bunx percher env set` and point at any external provider; ActiveRecord picks it up automatically.
- Rails 7+ ships with `bin/jobs` for Solid Queue; if you use it, run it inside the same container as a child process — Percher doesn't expose separate worker service types yet.
- Compile assets at build time (`bundle exec rails assets:precompile`) — runtime compilation is slow and ties up the first request.
- Set `RAILS_MASTER_KEY` (or `master.key` content via env) before the first deploy or boot will fail.
Related docs
Ready to deploy Rails (Ruby)?
Start on the Free plan. No credit card, live in ~2 minutes.
Sign up free →