public
Fork of parfait/acts_like_git
Description: A Rails plugin that uses git to version ActiveRecord fields, like acts_as_versioned, but a git.
Homepage:
Clone URL: git://github.com/courtenay/acts_like_git.git
acts_like_git / README
100644 39 lines (27 sloc) 1.665 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
= ActsLikeGit
 
ALG automagically saves the history of a given text or string field. It sits over the top of an ActiveRecord model; after a value is committed to the database, the plugin writes the new value to a text file and commits it to a git repository. This way you get all the advantages of using Git as version-control.
 
Note: this plugin does not play nice with other plugins which override the getters and setters on your model. So if, for example, you're creating a permalink on the same column as the versioning, you're going to run into problems due to the inherent complexity in define_attribute_methods.
 
== Usage
 
Declare which attributes are to be versioned:
 
  class Post < ActiveRecord::Base
    versioning(:title) do |version|
      version.repository = '/home/git/repositories/postal.git'
      version.message = lambda { |post| "Committed by #{post.author.name}" }
    end
  end
 
To view the complete list of changes:
 
  >> @post = Post.find 15
  <Post:15>
  >> @post.title
  => 'Freddy'
  >> @post.history(:title)
  => ['Joe', 'Frank', 'Freddy]
  >> @post.log
  => ['bfec2f69e270d2d02de4e8c7a4eb2bd0f132bdbb', '643deb45c12982dde75ba71657792a2dbdda83e6', '1ce6c7368219db7698f4acc3417e656510b4138d']
  >> @post.revert_to '1ce6c7368219db7698f4acc3417e656510b4138d'
  >> @post.title
  => 'Joe'
 
Note that ActsLikeGit will store the current value of the field in your database, so you can use @post.title as before. If you want
to force git to reload the field's data, send true to the attribute like
 
    @post.title(true)
 
 
Copyright (c) 2008 [Jamie van Dyke, Courtenay Gasking, Scott Chacon, Roman Le Négrate], released under the MIT license.