【发布时间】:2012-03-23 12:08:37
【问题描述】:
我正在编写一个 gem,它可以对 plist 文件进行一些复杂的解析/组合。
我认为为此使用 ActiveRecord 接口并将“结构”构建为内存数据库是有意义的。
宝石本身就可以正常工作。但是,我希望能够将它合并到 Rails 项目中。问题是我的 gem 在 ActiveRecord::Base 上调用了建立连接,这会终止 Rails 应用程序之前的任何连接。
这似乎是可能的,因为 ActiveRecord::Base 文档中有一段标题为:Connection to multiple databases in different models
这意味着您可以从 ActiveRecord::Base 子类化并在其上调用建立连接。那么问题是您无法定义您的架构,因为 ActiveRecord::Schema.define 使用当前在 Base 上设置的连接。
我认为这样做的唯一方法可能是将表构建到包含 gem 的 Rails 应用程序中。如果我能帮上忙,我宁愿不走那条路。有什么想法吗?
如果我没有说清楚,您可以查看我的 gem here 的数据库设置文件。
非常感谢
【问题讨论】:
-
是否有任何更改来覆盖建立连接?让它什么都不做?
-
大多数需要您在数据库中有特定表的 gem 都需要用户创建这些表。我认为在应用程序的数据库中随心所欲地创建表是非常糟糕的。 (除非它们是临时表)
标签: mysql ruby-on-rails ruby sqlite gem