# Refinement to facets/more/snapshot.rb

**URL:** <https://www.ruby-forum.com/t/refinement-to-facets-more-snapshot-rb/110312>\
**Category:** Ruby\
**Created:** [July 25, 2007, 7:30am UTC](https://www.ruby-forum.com/t/refinement-to-facets-more-snapshot-rb/110312 "2007-07-25T07:30:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [July 25, 2007, 7:30am UTC](https://www.ruby-forum.com/t/refinement-to-facets-more-snapshot-rb/110312/1 "2007-07-25T07:30:18Z")

</div>

Suggestion for facets library snapshot.rb

Consider adding optional fields argument to both take\_snapshot() and  
restore\_snapshot() to selectively take snapshot of selected fields as  
against all fields which is the default.  
Patch provided below over 1.8.54 : methods changes take\_snapshot and  
restore\_snapshot for Object only.

# = snapshot.rb

class Object  
def take\_snapshot(fields=nil)  
snap = Hash.new  
fields = instance\_variables unless fields  
fields.each do |iv|  
snap[iv] = instance\_variable\_get(iv)  
end  
snap  
end

def restore\_snapshot(snap, fields=nil)  
fields = instance\_variables unless fields  
fields.each do |iv|  
instance\_variable\_set(iv, snap[iv])  
end  
end  
end

- nasir

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [July 25, 2007, 7:51am UTC](https://www.ruby-forum.com/t/refinement-to-facets-more-snapshot-rb/110312/2 "2007-07-25T07:51:12Z")

</div>

On Jul 25, 1:28 am, “Nasir K.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> class Object  
> fields = instance\_variables unless fields  
> fields.each do |iv|  
> instance\_variable\_set(iv, snap[iv])  
> end  
> end  
> end

Good idea.

BTW, there’s a Facets mailing list now. You can sign up via Rubyforge  
or Google G…

[http://rubyforge.org/mail/?group\_id=804](http://rubyforge.org/mail/?group_id=804)  
[http://groups.google.com/group/facets-universal?lnk=li](http://groups.google.com/group/facets-universal?lnk=li)

Thanks!  
T.
