Forum: Ruby on Rails Object Version Control, or at least edit log

Posted by PsiPro (Guest)
on 2010-02-09 04:49
(Received via mailing list)
Hello all,

I need to create a object history, as I'll have multiple editors for a
site i am working on. Of course it would be great to have the ability
to restore an object to its state and undo the damage due to a bad
editor, but I'll settle for a system that will tell me who to blame.

Basically I want to track who changed what on what object. I would
like your input on the best way to do this, or someone to stop me if
its already been done.

My first thought, was to simply make the activity log and log the
"self.changed.to_yaml" to the database, but I would like more
information then that if possible, adding this along with the
"self.to_yaml" would provide semi-readable output on the changed
values but no details on the original values.

I would, if at all possible like to make it a bit more detailed, but
right now I'm looking for someone with a bit more experience in AR to
provide me with some tips/tricks.

Thanks,
Brian
Posted by Erol Fornoles (Guest)
on 2010-02-09 05:39
(Received via mailing list)
On Feb 9, 11:48 am, PsiPro <arjes...@gmail.com> wrote:
>
> Thanks,
> Brian

There's http://wiki.github.com/collectiveidea/acts_as_audited/. That
might work for your use case.
Posted by Mat Brown (Guest)
on 2010-02-09 12:49
(Received via mailing list)
On Mon, Feb 8, 2010 at 23:37, Erol Fornoles <erol.fornoles@gmail.com> 
wrote:
>> its already been done.
>>
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

Also might want to check out different database solutions - CouchDB
for instance has versioning built-in for all documents.
Posted by Marnen Laibow-Koser (marnen)
on 2010-02-09 14:08
Erol Fornoles wrote:
> On Feb 9, 11:48�am, PsiPro <arjes...@gmail.com> wrote:
>>
>> Thanks,
>> Brian
> 
> There's http://wiki.github.com/collectiveidea/acts_as_audited/. That
> might work for your use case.

Yup.  Or put something similar in a trigger.  More work but more 
airtight.

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
Posted by PsiPro (Guest)
on 2010-02-09 15:49
(Received via mailing list)
That looks like what I was planning on doing, but a little light on
the changed details.

Unless anyone has any other suggestion I'll just have to write my own.

Brian
Posted by Marnen Laibow-Koser (marnen)
on 2010-02-09 16:23
PsiPro wrote:
> That looks like what I was planning on doing, but a little light on
> the changed details.

What are you referring to?  Please quote when replying; we can't read 
your mind. :)

> 
> Unless anyone has any other suggestion I'll just have to write my own.

There are others -- for example, acts_as_versioned .  You might want to 
see which one Redmine uses.  You probably don't have to write your own.

> 
> Brian

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
Posted by Matt Jones (Guest)
on 2010-02-09 17:12
(Received via mailing list)
You may want to take a look at vestal_versions:

http://github.com/laserlemon/vestal_versions

Haven't used it myself, but looks to be able to revert objects to
pretty much any previous version *and* show what changed between
arbitrary pairs of versions.

--Matt Jones
Posted by Marnen Laibow-Koser (marnen)
on 2010-02-09 17:32
Matt Jones wrote:
> You may want to take a look at vestal_versions:
> 
> http://github.com/laserlemon/vestal_versions
> 
> Haven't used it myself, but looks to be able to revert objects to
> pretty much any previous version *and* show what changed between
> arbitrary pairs of versions.
> 
> --Matt Jones

Ooh, thanks!  I'm writing a medical records app, so I'm likely to need 
this soon.

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
Posted by PsiPro (Guest)
on 2010-02-09 18:24
(Received via mailing list)
> You may want to take a look at vestal_versions:
>
> http://github.com/laserlemon/vestal_versions
>
> Haven't used it myself, but looks to be able to revert objects to
> pretty much any previous version *and* show what changed between
> arbitrary pairs of versions.
>
> --Matt Jones

I have to agree, that looks great. Thanks for the link.

Brian
Posted by PsiPro (Guest)
on 2010-02-11 14:12
(Received via mailing list)
> You may want to take a look at vestal_versions:

>http://github.com/laserlemon/vestal_versions

> Haven't used it myself, but looks to be able to revert objects to
> pretty much any previous version *and* show what changed between
> arbitrary pairs of versions.

> --Matt Jones

So I looked into Vestal Versions and it appears there is an issue with
it using the class name Tag

I already have a tagging and tags relationship and their use of those
names is causing problems with Thinking Sphinx and Formtastic

When thinking sphinx tries to index tag_ids, or when formtastic
queries the tag relationship its talking to the VestalVersions model,
which doesn't talk like a normal relationship. I end up with the
following error:

"`reflect_on_association' for VestalVersions::Tagging:Module"

If I remove thinking sphinx's index on tag_ids it will be all fine and
dandy until formtastic throws the same error.

Brian
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.