From: Delano Mandelbaum Date: 2009-07-08T01:05:08+09:00 Subject: [ANN] Gibbler 0.5 Gibbler 0.5 ALPHA Git-like hashes and history for Ruby objects. Installation: $ gem install gibbler Examples: require 'gibbler' "kimmy".gibbler # => c8027100 :kimmy.gibbler # => 52be7494 config = {} config.gibbler # => 4fdcadc6 config.gibbled? # => false config[:server] = { :users => [:dave, :ali], :ports => [22, 80, 443] } config.gibbled? # => true config.gibbler # => ef23d605 config[:server][:users] << :yanni config.gibbler # => 4c558a56 config.gibbler.short # => 4c558a56 Gibbler can also keep track of the history of changes to an object. By default Gibbler supports history for Hash, Array, and String objects. The gibbler_commit method creates a clone of the current object and stores it in an instance variable using the current hash digest as the key. require 'gibbler' require 'gibbler/history' a = { :magic => :original } a.gibbler_commit # => d7049916 a[:magic] = :updated a.gibbler_commit # => b668098e a[:magic] = :changed a.gibbler_commit # => 0b11c377 a.gibbler_history # => d7049916, b668098e, 0b11c377 a.gibbler_revert! 'd7049916' # Return to a specific commit a.gibbler # => d7049916 a # => { :magic => :original } a.delete :magic a.gibbler_revert! # Return to the previous commit a.gibbler # => 0b11c377 a # => { :magic => :changed } a.gibbler_object 'b668098e' # => { :magic => :updated } a.gibbler_stamp # => 2009-07-01 18:56:52 -0400 Codes: http://github.com/delano/gibbler/ RDocs: http://delano.github.com/gibbler/