Support multiple databases.

I was wondering, how easy is it to develop an application to support different database back-ends? For example, I am looking to develop an app to support MySQL and SQLServer. One developer working in OS X against MySql, the other in Windows against SQLServer. Are there problems which may be encountered or does Rails handle all and it "just works"?

Cheers, Diego

You have to be a little careful with this, for sure, however it is not difficult as long as you keep in mind which models belong where.

This is a decent article on how to do this: http://schf.uc.org/articles/2006/12/06/multiple-concurrent-database-connections-with-activerecord

Do note that AR classes which redefine database connections can be subclassed and keep the super-class’s db connection. Thus:

class MySQLConn < ActiveRecord::Base establish_connection … end

class SQLServerConn < ActiveRecord::Base establish_connection … end

Then:

class Model1 < MySQLConn … does stuff to mysql end

class Model2 < SQLServerConn … does stuff to sqlserver end

You’ll have to go searching around and give some thought into dealing with test fixtures with this. There are a few articles around though as I haven’t done that, I’m not sure the best way.

Jason

Hi Jason,

Thanks for taking the time to reply. I'll look in thge directions you point to.

Cheers, Diego