在一个进程中使用什么ORM多个数据库连接sinatra应用程序?

检查ActiveRecord,DataMapper,续集:有些人使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接。 什么ORM更适合在使用不同数据库的sinatra应用程序中使用。

DataMapper专为多数据库使用而设计。

您可以通过说出类似DataMapper.setup(:repository_one, "mysql://localhost/my_db_name")类的东西来设置多个存储库。

然后,DataMapper将跟踪已在散列中设置的所有存储库,您可以引用这些存储库并将其用于作用域:

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

(默认范围只是DataMapper.repository,可以通过说DataMapper.setup(:default, "postgres://localhost/my_primary_db")等来设置)

似乎可以在大多数ORM中使用不同的数据库。 对于DataMapper,请查看知识答案。 对于Sequel,您可以将数据库处理程序传递给模型:

 class Tag < Sequel::Model(db) end 

db打开数据库的位置。 对于ActiveRecord,您可以使用establish_connection方法。

我个人更喜欢Sequel用于我的所有ORM和基本数据库访问,这是我使用Sinatra / Padrino以及任何其他时间我需要访问Rails之外的数据库。

我已经使用过DataMapper,但觉得Sequel更容易,更灵活,但也许这就是我的思维方式。 ActiveRecord可以单独使用,但我认为它与Rails结合使用效果最佳。

哪个更好”? 我认为这是主观的,主要与你的大脑如何运作有关。