使用Ruby gem中的数据库

时间:2015-07-25 18:18:33

标签: ruby-on-rails gem

我想在我正在编写的Ruby gem中使用数据库。 gem应该在Rails应用程序中使用,并且将包含从主Rails应用程序传入的文档的倒排索引。

我对如何解决这个问题感到有些困惑。我应该以某种方式挂钩主Rails数据库吗?或者我应该有一个独立的数据库?理想情况下,我只想使用ActiveRecord来创建,更新,删除和查询条目,但我不确定如何设置它。

此时数据将进入数据库:

module ActiveRecordExtension
  extend ActiveSupport::Concern

  class_methods do
    def foo
      "bar"
    end
  end

  included do
    after_save :add_to_inverted_index
  end

  def add_to_inverted_index
    # This is where I'd take the fields from the Rails app
    # and include them to my inverted index. However, I'm struggling
    # to find a way to hook into a database from my gem to do this.
  end
end
# Include the extension 
ActiveRecord::Base.send(:include, ActiveRecordExtension)

建议非常感谢!感谢

1 个答案:

答案 0 :(得分:1)

在澄清之后,您应该使用主Rails数据库。只需创建一个迁移并插入所需的表。你应该这样做因为:

  • 使用您宝石的每个人都知道数据库中存储的内容。
  • 通过迁移,您可以轻松回滚迁移,如果需要,可以轻松撤消迁移。
  • 无需创建额外的依赖项。想象一下你在RoR中做过的一个项目,并想一想如果你使用的每个gem创建了自己的数据库,那将是多么糟糕。

也许你应该看看已知的宝石以及它们是如何做到的。我正在考虑Devise