Module: Memories::ClassMethods

Defined in:
lib/memories/base.rb

Overview

:nodoc: all

Instance Method Summary (collapse)

Instance Method Details

- (Object) forget(*props)

If you'd like to exclude certain properties from versioning, simply pass those properties to this method:

class MyDocument < CouchRest::Model::Base
  use_database MY_DATABASE
  include Memories

  forget :prop1, :prop2

  property :prop1 #not versioned
  property :prop2 #not versioned
  property :prop3 #versioned
end

Raises:

  • (StandardError)


38
39
40
41
42
# File 'lib/memories/base.rb', line 38

def forget(*props) #:doc:
  raise StandardError, "Ambiguous use of both #remember and #forget." if @remember_called
  @forget_called = true
  self.forget_properties += props.map {|p| p.to_s}
end

- (Object) forget_properties



117
118
119
# File 'lib/memories/base.rb', line 117

def forget_properties
  @forget_properties ||= ["couchrest-type", "_id", "_rev", "_attachments", "milestone_memories"]
end

- (Object) forget_properties=(props)



121
122
123
# File 'lib/memories/base.rb', line 121

def forget_properties=(props)
  @forget_properties = props
end

- (Object) remember(*props)

If you'd like to explicitly define which properties you want versioned simply pass those properties to this method:

class MyDocument < CouchRest::Model::Base
  use_database MY_DATABASE
  include Memories

  remember :prop1, :prop2

  property :prop1 #versioned
  property :prop2 #versioned
  property :prop3 # not versioned
end

Raises:

  • (StandardError)


58
59
60
61
62
63
64
65
66
67
# File 'lib/memories/base.rb', line 58

def remember(*props) #:doc:
  raise StandardError, "Ambiguous use of both #remember and #forget." if @forget_called
  @remember_called = true
  props = props.map {|p| p.to_s}
  if self.remember_properties.nil?
    self.remember_properties = props 
  else
    self.remember_properties += props 
  end
end

- (Object) remember_attachments

Returns a list of attachment patterns for versioning. The list may contain strings, denoting the names of attachments to version, but it may also contain regular expressions, indicating that attachments with matching names should be versioned.



78
# File 'lib/memories/base.rb', line 78

def remember_attachments; @remember_attachments || []; end

- (Object) remember_attachments!(*attachment_names)

If you'd like to version attachments, simply call this macro in your class definition:

class MyDoc < CouchRest::Model::Base
  use_database MY_DB
  include Memories

  remember_attachments!
end

If you only want specific attachments versioned, pass strings and/or regular expressions to this macro. Any attachments with matching names will be versioned.

class HtmlPage < CouchRest::Model::Base
  use_database MY_DB
  include Memories

  remember_attachments! "image.png", %r{stylesheets/.*}
end


101
102
103
104
105
106
107
# File 'lib/memories/base.rb', line 101

def remember_attachments!(*attachment_names) #:doc:
  if attachment_names.empty?
    @remember_attachments = [/.*/]
  else 
    @remember_attachments = attachment_names
  end
end

- (Boolean) remember_attachments?

Returns true if self is set up to remember attachments. False otherwise.

Returns:

  • (Boolean)


70
71
72
# File 'lib/memories/base.rb', line 70

def remember_attachments? #:doc:
  @remember_attachments ? true : false
end

- (Object) remember_properties



109
110
111
# File 'lib/memories/base.rb', line 109

def remember_properties
  @remember_properties ||= nil
end

- (Object) remember_properties=(props)



113
114
115
# File 'lib/memories/base.rb', line 113

def remember_properties=(props)
  @remember_properties = props
end