Testing with a secondary 'outside' database

my rails app has a local database where all info is stored, but it
often syncs with a ‘master’ database that has different connection
info… i have that all set up in my app and it works great. problem is
with testing.

for example when i create a person it also creates them on the master
database. in test environment it still connects to the same database,
which is not what i’m looking for. I have something like this in my app
to allow a model to connect to the master db:

class Master < ActiveRecord::Base
self.abstract_class = true
establish_connection(
:adapter => “mysql”,
:database => “master”,
:host => “xxx.xxx.xxx”,
:port => xxxx,
:username => “user”,
:password => “pass”)
end

all ‘sync tables’ inherit from Master instead of ActiveRecord… so what
i need is something that can ask “is environment = testing ?” and if so
give different connection info for a testing Master DB. what’s the best
way to do this?

i was thinking having a similar class called FakeMaster… but how do i
make my sync tables decide which one to use on the fly?

can i do this? :

if RAILS_ENV == “test”
class Synctable < FakeMaster
end
else
class Synctable < Master
end
end

also keep in mind that even if the above works i would like to stay dry
and not duplicate the class bodies above. would this work? db_to_use =
(RAILS_ENV == “test” ? ‘FakeMaster’ : ‘Master’)
and then:
eval “class Synctable < #{db_to_use}”
… body goes here…
end

i somehow doubt that that is gonna work.

thanks in advance,

Stuart