Skip to main content
PercherPercher

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 publish

The 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

← Browse all deploy guides