Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

74 lines (53 sloc) 2.392 kB

Rails migrations in non-Rails (and non Ruby) projects.


Install Ruby, RubyGems and a ruby-database driver (e.g. gem install mysql) then: sudo gem install standalone_migrations

Add to Rakefile in your projects base directory: begin require 'tasks/standalone_migrations' rescue LoadError => e puts "gem install standalone_migrations to get db:migrate:* tasks! (Error: #{e})" end

Add database configuration to db/config.yml in your projects base directory e.g.: development: adapter: mysql encoding: utf8 reconnect: false database: somedatabase_dev pool: 5 username: root password: socket: /var/run/mysqld/mysqld.sock

  ...something similar...

To create a new database migration:

rake db:new_migration name=FooBarMigration
edit db/migrations/20081220234130_foo_bar_migration.rb

... and fill in the up and down migrations Cheatsheet.

If you're lazy and want to just execute raw SQL:

def self.up
  execute "insert into foo values (123,'something');"

def self.down
  execute "delete from foo where field='something';"

To apply your newest migration:

rake db:migrate

To migrate to a specific version (for example to rollback)

rake db:migrate VERSION=20081220234130

To migrate a specific database (for example your "testing" database)

rake db:migrate RAILS_ENV=test

To execute a specific up/down of one single migration

rake db:migrate:up VERSION=20081220234130

To overwrite the default options

Possible options MIGRATION_OPTIONS = {:config=>'database/config.yml', ... } gem 'standalone_migrations' require 'tasks/standalone_migrations'


This work is based on Lincoln Stoll's blog post and David Welton's post.

Jump to Line
Something went wrong with that request. Please try again.