page:migrate:heroku app:rails

Migrate Heroku app: Rails

Move Rails compute from Heroku app to Ample, one component at a time. Destination verified on Ample: the app built, started and answered on its public HTTPS URL with encrypted configuration delivered.

Source procedure:

Cutover:

Rollback:

Workflow Steps

  1. Inventory the source: List what Heroku app provides beyond the component you are moving. Out of scope here: Heroku add-ons other than Postgres, release-phase scheduling, dyno autoscaling and Heroku Scheduler are not migrated; use --release-command for release tasks.
  2. Source step 1: Export config vars with heroku config -s -a into an env file kept out of the repository.
  3. Source step 2: Translate the Procfile web process into the start command (--start or the package manifest's start script); worker processes need a separate --kind worker service.
  4. Source step 3: Note buildpacks and add-ons in use; managed databases replace Heroku Postgres, other add-ons need their own plan.
  5. Deploy on Ample in parallel: bundle install into vendor/bundle from Gemfile.lock (development and test groups skipped), then Puma via rails server reading PORT on the ruby-3.4 template with RAILS_ENV=production. Pass the exported variables with --env; keep the source running.
    • Command: ample deploy . --name <your-app-name> --public --env-file .env.production
  6. Validate before cutover: Run the app's own checks and, for data, compare counts and checksums; the example checks are the pattern self-tests (/p/configuration-secrets, /p/relational-records).
  7. Cut over: Add the custom domain with ample domain add, update DNS from the Heroku DNS target, keep the Heroku app until verified, then scale it down.
  8. Rollback: Point DNS or configuration back to the source. The source was never modified; deletion is a separate, user-executed step after validation.

Examples

Success Checks

Limitations

Cost Estimate