-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Updating Heroku migration guide #2347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
theoctopusperson
commented
Feb 11, 2026
- Replace Rails-specific migration doc with a language-agnostic guide covering Node.js, Python, Ruby, Go, and more
- Add new doc at /docs/getting-started/migrate-from-heroku/
- Remove old doc from /docs/rails/getting-started/migrate-from-heroku/ with redirect_from for backwards compatibility
- Add sidebar nav entry under Getting Started
- Replace Rails-specific migration doc with a language-agnostic guide covering Node.js, Python, Ruby, Go, and more - Add new doc at /docs/getting-started/migrate-from-heroku/ - Remove old doc from /docs/rails/getting-started/migrate-from-heroku/ with redirect_from for backwards compatibility - Add sidebar nav entry under Getting Started Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jphenow
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably wise to take out some of the pricing but maybe its still useful to explain how our usage works differently and point to /pricing or the docs for pricing?
| worker = "npm run worker" | ||
|
|
||
| # The web process gets the HTTP service | ||
| [[services]] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably switch to http_services - I think we tend to recommend that for the "standard" http stuff lately.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
| @@ -0,0 +1,334 @@ | |||
| --- | |||
| title: Migrate from Heroku | |||
| layout: docs | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
old was framework_docs - intentional change? may be since we're moving out of the "rails" section
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My take was it's intentional, due to the move out of Rails section :)
|
|
||
| ```bash | ||
| # Open your app in a browser | ||
| fly open |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fly apps open
| --- | ||
|
|
||
| <figure class="flex justify-center"> | ||
| <img src="/static/images/migrate.png" alt="Illustration by Annie Ruygt of a bird carrying an app to a balloon who is welcoming the app to join his group" class="w-full max-w-lg mx-auto"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did we mean to drop this illustration?
| # 3. Create Managed Postgres and import data | ||
| fly mpg create --name your-db --region iad | ||
| # Note the CLUSTER_ID from output, then: | ||
| fly mpg proxy CLUSTER_ID --local-port 15432 & |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wish we could make this more of an automated copy to env var - it seems like people will copy/paste not realizing they had to look at the output and hand-copy it
| Attach the database to your app: | ||
|
|
||
| ```bash | ||
| fly mpg attach CLUSTER_ID -a your-app-name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This and the couple above don't mention that CLUSTER_ID is a value to take from the output above
|
|
||
| ```bash | ||
| # 1. Export secrets (excluding Heroku-managed vars) | ||
| heroku config -s -a YOUR_HEROKU_APP | grep -v '^DATABASE_URL\|^REDIS_URL\|^HEROKU_' > secrets.txt |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suspect folks may understand that this is a given, but we might want to call out that they shouldn't commit their secrets.txt
| fly mpg create --name your-db --region iad | ||
| # Note the CLUSTER_ID from output, then: | ||
| fly mpg proxy CLUSTER_ID --local-port 15432 & | ||
| pg_dump --no-owner --no-acl "$(heroku config:get DATABASE_URL -a YOUR_HEROKU_APP)" | \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh meant to ask here too - you did this? it worked for a migration from Heroku?
kcmartin
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know there's been resistance to entirely removing pages for SEO reasons -- wouldn't the redirect accomplish what you're after,without needing to remove the Rails page? Do we care to provide any Rails-specific info in the new guide?
Info on redirects: https://github.com/superfly/landing?tab=readme-ov-file#redirecting-pages
| | `heroku pg:psql` | `fly mpg connect CLUSTER_ID` | | ||
| | `heroku restart` | `fly apps restart` | | ||
| | `heroku scale web=2` | `fly scale count web=2` | | ||
| | `heroku maintenance:on` | See [maintenance mode docs](/docs/apps/maintenance/) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Invalid link