Checked ActiveRecord,DataMapper,Sequel:有些人使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接。什么ORM更适合在使用不同数据库的sinatra应用程序中使用。
答案 0 :(得分:8)
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")
等来设置)
答案 1 :(得分:5)
似乎可以在大多数ORM中使用不同的数据库。 对于DataMapper,请查看知识答案。 对于Sequel,您可以将数据库处理程序传递给model:
class Tag < Sequel::Model(db)
end
其中db是打开数据库的。 对于ActiveRecord,您可以使用establish_connection方法。
答案 2 :(得分:2)
我个人更喜欢Sequel用于我的所有ORM和基本数据库访问,这是我使用Sinatra / Padrino以及任何其他时间我需要访问Rails之外的数据库。
我使用过DataMapper,但觉得续集更容易,更灵活,但也许这就是我的思维方式。 ActiveRecord本身就可以,但我认为它与Rails结合使用效果最好。
哪个“更好”?我认为这是主观的,主要与你的大脑如何运作有关。