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

Ruby 在一个进程多数据库连接sinatra应用程序中使用什么ORM?,ruby,database,orm,sinatra,sequel,Ruby,Database,Orm,Sinatra,Sequel,选中ActiveRecord、DataMapper、Sequel:有些使用全局变量(静态变量),有些在加载带有模型的源文件之前需要打开db连接。在使用不同数据库的sinatra应用程序中,哪个ORM更适合使用。就我个人而言,我更喜欢使用Sequel进行所有ORM和基本数据库访问,这就是我在sinatra/Padrino中使用的ORM,以及我需要在Rails之外访问数据库的任何其他时间使用的ORM 我用过DataMapper,但觉得Sequel更简单、更灵活,但也许这就是我的想法。ActiveRe

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

就我个人而言,我更喜欢使用Sequel进行所有ORM和基本数据库访问,这就是我在sinatra/Padrino中使用的ORM,以及我需要在Rails之外访问数据库的任何其他时间使用的ORM

我用过DataMapper,但觉得Sequel更简单、更灵活,但也许这就是我的想法。ActiveRecord本身还可以,但我认为与Rails结合使用效果最好


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

DataMapper是为多数据库使用而设计的

只需说出类似于
DataMapper.setup(:repository\u 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,请查看knowtheory答案。 对于Sequel,您可以将数据库处理程序传递给模型:

class Tag < Sequel::Model(db)
end
class标签
其中数据库是打开数据库的。
对于ActiveRecord,您可以使用“建立连接”方法。

官方文档可在上找到。如果不指定上下文/存储库,则采用
:default
一个。你至少应该有这样的背景。