如何通过Ruby Gem共享activerecord模型

我有几个Rails项目,它们有一些共同的代码库。 公共代码由一些ActiveRecord模型和一个api组成。 目前我正在复制所有项目中的公共代码,这是一种非常糟糕的做法。 现在我想将公共代码移动到Ruby Gem。 我是Ruby on Rails的新手。 我已经看过几个 Gem 教程,但找不到任何有用的东西,可以帮助我创建一个带有可重用ActiveRecord模型的gem。

基本上我想要的是 –

  • Gem包含一些常见的活动记录模型。
  • Gem包含一些在这些模型上提供api的代码
  • 这个gem将被几个Rails项目使用,它们将初始化数据库等。

请告诉我这种情况的最佳做法是什么。

我记得我的电子商务项目遇到了同样的问题,后来我把它移到了单独的存储库中。 只需将整个重复代码移动到rails引擎即可。

您可以使用以下几种指南:

  1. http://edgeguides.rubyonrails.org/engines.html

  2. http://coding.smashingmagazine.com/2011/06/23/a-guide-to-starting-your-own-rails-engine-gem/

  3. http://railscasts.com/episodes/277-mountable-engines

您可以创建生成器来安装模型的迁移文件。 因此,每当您将rails引擎安装到任何rails应用程序并运行生成器时。 你只需要几个命令即可启动和运行: rake db:migrate等。

嗯,我分享的是我的经历。 我不知道是否还有其他更好的办法。

PS:这是我创建的引擎存储库的链接 – https://github.com/suryart/spree_active_sale ,也许代码可以帮助您作为参考。