Deploy guide · runtime = "docker"
Deploy Rails (Ruby) on Percher
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; the live URL prints on completion.
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)?
Free plan, no credit card. Live in under a minute.
Sign up free