On Tuesday 30 December 2008 04:10:04 greymatter wrote:
> I'm trying to understand how to architect an app that needs to have
> two separate database connections, both managed by Sequel. Some model
> classes will go into one database while others go into the other
> database.
>
> I've got a couple of global variables that I'm using to store the two
> connections, although I'm not really sure where they should live. I'm
> using the optional argument to Sequel::Model, hoping to specify which
> database that model belongs in. I believe that I have no choice but
> to explicitly include the table name, as well.
>
> So, one of my classes looks like this:
>
> require 'rubygems'
> require 'sequel'
>
> $transientdb = Sequel.connect('jdbc:hsqldb:mem:testmem') if
> $transientdb == nil
> $permanentdb = Sequel.connect('jdbc:hsqldb:file:testfile') if
> $permanentdb == nil
>
> class Call < Sequel::Model($transientdb[:calls])
> set_schema do
> primary_key :id
> ...
> end
>
> def initialize
> $transientdb.transaction do
> puts "Creating table 'calls'\n"
> Call.create_table
> end unless Call.table_exists?
> end
> end
>
> A table that is intended to live in the permanent database might be
> declared
>
> class Message < Sequel::Model($permanentdb[:messages])
> ...
>
> Am I going about this the right way? I'm open to suggestions for a
> better approach, as I'm learning as I go.
>
> Thanks!
>
> --Lee
>
One easy way is just to explicitly set which database connection the model
should use. Somethine like so:
class MyModel < Sequel::Model
end
class MyOtherModel < Sequel::Model
end
con1 = Sequel.connect(...)
con2 = Sequel.connect(...)
MyModel.db = con1
MyOtherModel.db = con2
The MyModel will only use the con1 connections and the MyOtherModel will only
use the con2 connections.
Hope that helps.
spox
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sequel-talk?hl=en
-~----------~----~----~----~------~----~------~--~---