# Migrations via script || migrate multiple DB's

**URL:** <https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675>\
**Category:** Rails\
**Created:** [July 17, 2007, 7:33pm UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675 "2007-07-17T19:33:56Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [July 17, 2007, 7:33pm UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675/1 "2007-07-17T19:33:56Z")

</div>

greetings,

I’m wondering if anyone else has faces the task of migrating multiple  
databases? How can one do this is an automated fashion?

Currently I’m running usual “rake db:migrate” from cmd, where I’ll  
manually edit the database.yml :database line to indicate the current  
DB. This is done is a sequential fashion. While this is fine for  
working out the migrations, it’s going to be real tedious for migrating  
the 50+ production databases.

Thus I’d like to come up with a ruby script that will run the migration  
for each DB automatically.

Two issues I see…

1. how does one run migrations from ruby? is it a `/path_to_app/rake db:migrate`, generally I like to avoid cmd line executions in scripts

2. how does one programmatically reset the migration connection? I know  
I can do a “model\_obj.establish\_connection” for ActiveRecord, but I  
don’t see anything similar for migration.

Having these resolved, I envision something like…

database\_list.each{|db|  
migration.connection(db)  
migration.run  
}

Thank You,

andy koch

---

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [July 17, 2007, 9:39pm UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675/2 "2007-07-17T21:39:21Z")

</div>

HI Andy,

I believe you need to be looking at Capistrano. Depending upon your  
situation.

And, if I may ask, what kind of app is using 50+ identical databases?

## – Peter F.

## iPhone – “IT”-ness. href= [Apple’s iPhone could become iconic ‘It Object’ - MacDailyNews](http://www.macdailynews.com/index.php/weblog/comments/apples_iphone_could_become_iconic_it_object)

---

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [July 17, 2007, 11:02pm UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675/3 "2007-07-17T23:02:36Z")

</div>

Peter F. schrieb:

> HI Andy,
> 
> I believe you need to be looking at Capistrano. Depending upon your  
> situation.
> 
> And, if I may ask, what kind of app is using 50+ identical databases?
> 
> –  
> Peter F.

ah, I was thinking of Cap, but I’m fairly hackish with it. I’ll see  
where that leads me.

what kind of app? sure you may ask, it’s an inherited PHP app that runs  
Firebird. the app manages text strings for desktop apps where each DB  
is a different branch

I didn’t design it, I inherited it, and now I’m rail-ifying it.

/ak

---

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [July 19, 2007, 5:44pm UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675/4 "2007-07-19T17:44:10Z")

</div>

Without knowing more detail, it sounds like your design could use some  
refactoring-love along the way.  
Maybe a couple habtm tables with strings/context relationships?

Good luck!

On 7/17/07, Andy K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > –
> 
> /ak
> 
> >

## – Peter F.

## iPhone – “IT”-ness. href= [Apple’s iPhone could become iconic ‘It Object’ - MacDailyNews](http://www.macdailynews.com/index.php/weblog/comments/apples_iphone_could_become_iconic_it_object)

---

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [November 4, 2007, 7:20am UTC](https://www.ruby-forum.com/t/migrations-via-script-migrate-multiple-dbs/109675/5 "2007-11-04T07:20:14Z")

</div>

If you have multiple databases with the same schema, you might use  
something like:

databases.each do |database|  
ActiveRecord::Base.establish\_connection :adapter =\> “adapter”,  
:host =\> “host”,  
:username =\> “username”,  
:password =\> “password”,  
:database =\> database  
ActiveRecord::Migrator.migrate(“db/migrate/”)  
end

I made a db:migrate\_all rake task [Parked at Loopia](http://pastie.caboo.se/113856) (which I  
saved in lib/tasks/migrate\_all.rake)

Just need to play with better sql config, probably read from  
database.yml, but it works fine for me having one rails app, kind of  
CMS, connecting to database dependently on request.host in application  
controller, so each site has its own db and data directory.

I had to do this because I have mongrel\_cluster with apache  
mod\_proxy\_balancer, and I cannot afford to run cluster for each site, so  
I need one rails app with one scalable mongrel\_cluster and a lot of  
sites sharing it.

Got hint with this from guy with nick pythonic on  
#removed\_email\_address@domain.invalid
