Ruby on Rails中模型的版本控制

我正在寻找一个插件/动作来允许我的模型版本化。 找到可用解决方案的列表很困难。 到目前为止我收集了:

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

最后两个解决方案只需要一个版本表 – 这听起来不错,但我对于如何通过这种方式处理迁移的简易性感到不好(因为它们将状态序列化为字符串)。

另一方面, acts_as_versioned有点尘土飞扬(1月最后一次提交)。 这些是否有任何近期经验? 或者我可能忽略的其他解决方案(或叉子)?

上周我和vestal_versions合作过,是的,它是最先进的选择,至少在空间方面:你只存储你真正需要的东西。 这是一个活跃的项目,版本1.0将是一个具有许多新function的巨大更新; 只看1.0分支就知道我的意思。

但是在玩了一下之后,我注意到了一个很大的缺陷:性能。 每次需要特定版本时,都必须经历所有中间版本,重建所需的版本。 这也意味着您无法直接编辑或删除版本,因为它可能会混乱修改,破坏链。 为此,您需要充分处理版本,即vestal_versions当前不执行的操作。

这样,对于我遇到的问题,我最终得到了自己的版本控制解决方案。 我需要性能以及快速删除和编辑版本的能力,因此我牺牲了存储并开发了类似于act_as_versioned东西。

但是,如果你不需要这个并且不必经常恢复,我强烈推荐vestal_versions 。 它是一个先进,可靠的解决方案和积极的解决方案,背后有一个充满激情的开发人员。

我一直在使用名为“paper_trail”的gem。 它似乎是目前在线的最佳解决方案。 它集审计和版本控制于一体。

http://github.com/airblade/paper_trail

希望这可以帮助!

我们在项目中使用了acts_as_audited,取得了相当不错的成功。

你可以在http://github.com/collectiveidea/acts_as_audited/找到它。

(最后一次提交于11月:-))

几个月前,我测试了几种解决方案,而vestal_versions是最有效的。 Ryan Bates还有很棒的截屏video 。

如果您正在寻找其他替代方案,请查看The Ruby Toolbox列表 。

另一个插件是paper_trail。 这是今天发布的railscast的链接:

http://railscasts.com/episodes/255-undo-with-paper-trail

他还提到为什么他更喜欢paper_trail而不是vestal_versions

嘿,我想知道是否有人想过在数据库的后端INSTEAD上使用Perforce,GitHub等作为支持版本控制的方法? 所以它基本上是基于文件的数据检索,我猜……