Skip to content

Conversation

@theoctopusperson
Copy link

  • 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>
@theoctopusperson theoctopusperson changed the title Move Heroku migration guide to top-level getting-started section Updating Heroku migration guide Feb 11, 2026
Copy link
Member

@jphenow jphenow left a 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]]
Copy link
Member

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.

Copy link
Contributor

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
Copy link
Member

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

Copy link
Contributor

@kcmartin kcmartin Feb 11, 2026

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
Copy link
Member

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">
Copy link
Member

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 &
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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)" | \
Copy link
Member

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?

Copy link
Contributor

@kcmartin kcmartin left a 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/) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Invalid link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants