Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What ORM to use in one process multiple db connections sinatra application?

Checked ActiveRecord, DataMapper, Sequel: some use globals (static variables) some require open db connection before loading source file with models. What ORM is better to use in sinatra application that uses different databases.

like image 301
Andrey Yatsyk Avatar asked Apr 14 '10 18:04

Andrey Yatsyk


3 Answers

DataMapper is designed for multi-database use.

You can set up multiple repositories just by saying something like DataMapper.setup(:repository_one, "mysql://localhost/my_db_name").

DataMapper then tracks all the repositories that have been setup in a hash that you can reference and use for scoping:

DataMapper.repository(:repository_one){ MyModel.all }

(The default scope just being DataMapper.repository, which you can set up by saying DataMapper.setup(:default, "postgres://localhost/my_primary_db") or the like)

like image 177
knowtheory Avatar answered Oct 28 '22 09:10

knowtheory


It seems that it is possible to use different databases in most of ORMs. For DataMapper look at knowtheory answer. For Sequel you can pass database handler to model:

class Tag < Sequel::Model(db)
end

where db is opened database. For ActiveRecord you can use establish_connection method.

like image 45
Andrey Yatsyk Avatar answered Oct 28 '22 09:10

Andrey Yatsyk


Personally I prefer Sequel for all my ORM and basic database accesses and is what I use with Sinatra/Padrino and any other time I need to access a database outside of Rails.

I've used DataMapper but felt Sequel was easier and more flexible, but maybe that's just how my mind works. ActiveRecord is OK on its own, but I think it works best in combination with Rails.

Which is "better"? I think that is subjective and mostly is tied to how your brain works.

like image 43
the Tin Man Avatar answered Oct 28 '22 08:10

the Tin Man