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

蹲街弑〆低调 提交于 2020-01-11 03:06:07

问题


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.


回答1:


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)




回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/2639926/what-orm-to-use-in-one-process-multiple-db-connections-sinatra-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!