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

时间:2010-04-14 18:19:43

标签: ruby database orm sinatra sequel

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

3 个答案:

答案 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结合使用效果最好。

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