【发布时间】:2010-04-14 18:19:42
【问题描述】:
已检查 ActiveRecord、DataMapper、Sequel:有些使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接。在使用不同数据库的 sinatra 应用程序中使用哪种 ORM 更好。
【问题讨论】:
标签: ruby database orm sinatra sequel
已检查 ActiveRecord、DataMapper、Sequel:有些使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接。在使用不同数据库的 sinatra 应用程序中使用哪种 ORM 更好。
【问题讨论】:
标签: ruby database orm sinatra sequel
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")等来设置)
【讨论】:
:default 之一。你至少应该有这样的上下文。
似乎可以在大多数 ORM 中使用不同的数据库。 对于 DataMapper,请查看 knowtheory 答案。 对于 Sequel,您可以将数据库处理程序传递给模型:
class Tag < Sequel::Model(db)
end
其中 db 是打开的数据库。 对于 ActiveRecord,您可以使用建立连接方法。
【讨论】:
就我个人而言,我更喜欢 Sequel 来访问我的所有 ORM 和基本数据库访问,并且我在 Sinatra/Padrino 以及任何其他需要访问 Rails 之外的数据库时都使用它。
我使用过 DataMapper,但觉得 Sequel 更简单、更灵活,但也许这正是我的想法。 ActiveRecord 本身就可以,但我认为它与 Rails 结合使用效果最好。
哪个“更好”?我认为这是主观的,主要与你的大脑如何工作有关。
【讨论】: