Migrate from Heroku to Engine Yard AppCloud

Before arriving to work at Engine Yard I ran a Rails consultancy called Mocra. We would deploy our draft Rails apps on Heroku and then migrate them to Engine Yard AppCloud or perhaps a small VPS at some stage. I still have over 30 little apps on Heroku, I think. Back when I was at Mocra, I would have loved a migration tool to help us migrate an initial Heroku app to a production environment like Engine Yard AppCloud. Migrating an application and its data is kind of a pain.

Fortunately I had a couple weeks at home recently after the birth of my third child, so I finally had the time to create the tool I always wanted - a migration tool to onboard on to Engine Yard AppCloud from other places, called ey-migrate.

Source - https://github.com/engineyard/engineyard-migrate

ey-migrate heroku .

First up, in the spirit of my own personal need: let’s all migrate Heroku applications to AppCloud.

The tool assumes you have:

  • A running Heroku application with your data in its SQL database
  • A Gemfile, rather than Heroku’s deprecated .gems format
  • Added mysql2 to your Gemfile
  • This upgraded application running on AppCloud without any of your data

Need to create your AppCloud account? Sign up now.

Done all that? Let’s do the migration dance.

Run the following command and your database is automatically migrated across:

gem install engineyard-migrate
ey-migrate heroku .

The command line application ey-migrate should tell you what to do if you’ve missed a step - like forgetting to boot your AppCloud environment or forgetting to deploy your application after the environment boots.

If you run into any difficulties at all with the migration tool, or have a wish list of features, drop them into the issues tracker.

What’s next?

I’d like to be able to migrate some configuration (delayed job and cron job settings), and other databases (mongodb). What else would be great for a migration tool?

I also want the migration tool to migrate from AppCloud to AppCloud. There are occasions when you need to create a new environment and boot it from scratch, and then migrate your application over (for example, migrating the application to a new region via the Multi-Region Alpha feature). I’d like a tool for that.