### Migrate Netlify web app: Rails

Move Rails compute from Netlify web 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: Copy environment variables from Site configuration (or `netlify env:list`) into an env file kept out of the repository.

**Not migrated automatically**: Netlify Functions, Edge Functions, Forms, Identity and `_redirects`/`_headers` rules are not migrated; implement redirects in the app or the framework.

**Cutover**: Add the custom domain with `ample domain add`, set the documented DNS records, keep the Netlify site until verified, then remove the domain from Netlify. **Rollback**: keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.

#### Prerequisites
- Authorized access to the Netlify web app source and its export tooling
- An inventory of every component in scope and out of scope
- A validated backup or copy before any cutover
- An Ample account token with `servers:write`, `databases:read`

#### Resource Requirements
- **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **Postgres**: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no `DATABASE_URL` is supplied.

#### Workflow Steps
1. **Inventory the source**: List what Netlify web app provides beyond the component you are moving.
2. **Source step 1**: Copy environment variables from Site configuration (or `netlify env:list`) into an env file kept out of the repository.
3. **Source step 2**: Translate `netlify.toml` build settings into the repository's own build script; Ample runs the detected build.
4. **Source step 3**: List Netlify-only features in use.
5. **Deploy on Ample in parallel**: Run `ample deploy . --name --public --env-file .env.production`.
6. **Validate before cutover**: Run the app's own checks and compare counts and checksums.
7. **Cut over**: Add the custom domain with `ample domain add` and set DNS records.
8. **Rollback**: Point DNS or configuration back to the source.

#### Success Checks
- Destination app responds on its public URL.
- Configuration-secrets check from the destination example.
- Data or object counts and checksums match the source.

#### Limitations
- Documentation only: nothing executed automatically.
- No full source-product parity is claimed: Netlify Functions, Edge Functions, Forms, Identity and `_redirects`/`_headers` rules are not migrated.

#### Cost Estimate
- Monthly amount: $10.00
- Components:
  - App server (size: `s-1vcpu-1gb`)
  - Managed PostgreSQL database (size: `s-1vcpu-1gb`)

#### Evidence Summary
- Destination side verified: the Rails pattern fixture deployed on Ample.

#### Formats
- [HTML version](/content/migrate/netlify-web-app/rails/index.html)
- [Markdown version](/content/migrate/netlify-web-app/rails.md)
- [JSON version](https://api.ample.computer/v1/catalog/recipes/page%3Amigrate%3Anetlify-web-app%3Arails)
