Using Rails Migration on different database than standard "production" or "development" Using Rails Migration on different database than standard "production" or "development" ruby ruby

Using Rails Migration on different database than standard "production" or "development"


There's a much easier answer. Add this to your migration:

def connection  ActiveRecord::Base.establish_connection("quiz_#{Rails.env}").connectionend

That's for Rails 3.1. For Rails 2.X or 3.0 it's a class function instead (eg def self.connection)


I got this to work with the following code.

class AddInProgressToRefHighLevelStatuses < ActiveRecord::Migration  def connection    @connection = ActiveRecord::Base.establish_connection("sdmstore_#{Rails.env}").connection  end  def change    add_column :ref_high_level_statuses, :is_in_progress, :boolean, :default => true    @connection = ActiveRecord::Base.establish_connection("#{Rails.env}").connection  endend

It was necessary to set the connection back to get it to write the migration to the schema_migrations table so rake would not try to re-run the migration the next time. This assumes that you want the schema_migrations table in the default database configuration to keep track of the migrations checked into version control for the corresponding project.

I was unable to get the down migration to work.


You should define the other databases/environments in /config/environments.

After that you can use the following command to migrate that specific environment.

rake db:migrate RAILS_ENV=customenvironment