16

我正在寻找一个插件/行为来允许对我的模型进行版本控制。很难找到可用解决方案的列表。到目前为止,我收集到:

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

最后两个解决方案只需要一个版本表 - 这听起来不错,但我对迁移的便利性将如何受此影响有一种不好的感觉(因为它们将状态序列化为字符串)。

另一方面,acts_as_versioned有点尘土飞扬(最后一次提交是在一月份)。最近有没有这些方面的经验?还是我可能忽略的其他解决方案(或分叉)?

4

6 回答 6

21

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

http://github.com/airblade/paper_trail

希望这可以帮助!

于 2009-11-09T10:03:03.363 回答
4

vestal_versions上周我使用过,是的,它是最先进的替代方案,至少在空间方面:你存储你真正需要的东西。这是一个活跃的项目,1.0 版将是一个包含许多新功能的巨大更新;只要看看 1.0 分支就知道我的意思了。

但是玩了一会儿之后,我注意到了一个很大的缺陷:性能。每次需要特定版本时,都必须遍历所有中间版本,重新构建所需的版本。这也意味着您不能直接编辑或删除版本,因为它可能会混淆修改,破坏链条。为此,您需要充分处理版本,vestal_versions而目前还没有这样做。

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

但是,如果您不需要这个并且不必非常频繁地恢复,我强烈推荐vestal_versions. 这是一个先进的、可靠的解决方案和一个积极的解决方案,背后有一位热情的开发人员。

于 2009-11-08T23:11:25.230 回答
2

几个月前,我测试了几个解决方案,并且vestal_versions是最有效的。这里还有来自 Ryan Bates的精彩截屏视频。

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

于 2009-11-08T18:44:05.943 回答
2

我们在一个项目中使用了acts_as_audited,取得了相当大的成功。

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

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

于 2009-11-08T19:39:53.937 回答
1

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

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

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

于 2011-02-28T20:31:37.893 回答
0

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

于 2011-01-21T12:58:53.077 回答