What ORM to use in one process multiple db connect

2019-02-14 04:19发布

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.

3条回答
混吃等死
2楼-- · 2019-02-14 04:50

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)

查看更多
The star\"
3楼-- · 2019-02-14 05:03

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.

查看更多
时光不老,我们不散
4楼-- · 2019-02-14 05:06

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.

查看更多
登录 后发表回答