在红宝石中初始化Mongoid的最佳位置

时间:2013-08-14 16:47:51

标签: ruby mongodb rubygems mongoid

我正在构建一个需要与MongoDB通信的ruby gem。我使用Mongoid作为我的客户端驱动程序,我很好奇在ruby gem的上下文中初始化是什么最好的做法。我需要在适当的地方运行以下内容:

Mongoid.load!("path/to/your/mongoid.yml", :production)

问题是在ruby gem中执行此操作的最佳位置在哪里,以确保我的代码中可以使用MongoDB连接?

2 个答案:

答案 0 :(得分:0)

在我看来,最佳做法是你根本不这样做。

如果你的rubygem的消费者已经在他们的应用程序的其他地方使用Mongoid会发生什么?当你可以使用现有的客户端实例/ mongoid会话时,对你(从他们正在使用的rubygem依赖关系中)初始化一个额外的客户端实例/ mongoid会话是没有意义的。

我会让您的用户管理他们自己的连接并构建您的库,以便它知道如何设置自己,前提是它已经交付了正常运行的数据库连接。

例如,您可以执行以下操作:

# for rails apps, in config/initializers
YourGem.configure do |config|
  config.client = mongoid_client_instance
end

# for use outside rails
my_instance = YourGem.new(mongoid_client_instance)

在这种情况下,最好避免假设他们想要初始化外部依赖关系或强制做出任何决定。

答案 1 :(得分:0)

我只需记录您的Gem / Repository中的设置信息,并将Mongoid作为依赖项添加到.gemspec中。

宝石不应该是侵入性的,配置应该是明显的,可管理的并且记录良好。