Class Index [+]

Quicksearch

Sequel::Plugins::Serialization::ClassMethods

Attributes

deserialization_map[R]

A hash with column name symbols and callable values, with the value called to deserialize the column.

serialization_map[R]

A hash with column name symbols and callable values, with the value called to serialize the column.

serialization_module[RW]

Module to store the serialized column accessor methods, so they can call be overridden and call super to get the serialization behavior

Public Instance Methods

inherited(subclass) click to toggle source

Copy the serialization_map and deserialization map into the subclass.

     # File lib/sequel/plugins/serialization.rb, line 103
103:         def inherited(subclass)
104:           super
105:           sm = serialization_map.dup
106:           dsm = deserialization_map.dup
107:           subclass.instance_eval do
108:             @deserialization_map = dsm
109:             @serialization_map = sm
110:           end
111:         end
serialize_attributes(format, *columns) click to toggle source

Create instance level reader that deserializes column values on request, and instance level writer that stores new deserialized values.

     # File lib/sequel/plugins/serialization.rb, line 115
115:         def serialize_attributes(format, *columns)
116:           if format.is_a?(Symbol)
117:             unless format = REGISTERED_FORMATS[format]
118:               raise(Error, "Unsupported serialization format: #{format} (valid formats: #{REGISTERED_FORMATS.keys.map{|k| k.inspect}.join})")
119:             end
120:           end
121:           serializer, deserializer = format
122:           raise(Error, "No columns given.  The serialization plugin requires you specify which columns to serialize") if columns.empty?
123:           define_serialized_attribute_accessor(serializer, deserializer, *columns)
124:         end
serialized_columns() click to toggle source

The columns that will be serialized. This is only for backwards compatibility, use serialization_map in new code.

     # File lib/sequel/plugins/serialization.rb, line 128
128:         def serialized_columns
129:           serialization_map.keys
130:         end

Private Instance Methods

define_serialized_attribute_accessor(serializer, deserializer, *columns) click to toggle source

Add serializated attribute acessor methods to the serialization_module

     # File lib/sequel/plugins/serialization.rb, line 135
135:         def define_serialized_attribute_accessor(serializer, deserializer, *columns)
136:           m = self
137:           include(self.serialization_module ||= Module.new) unless serialization_module
138:           serialization_module.class_eval do
139:             columns.each do |column|
140:               m.serialization_map[column] = serializer
141:               m.deserialization_map[column] = deserializer
142:               define_method(column) do 
143:                 if deserialized_values.has_key?(column)
144:                   deserialized_values[column]
145:                 else
146:                   deserialized_values[column] = deserialize_value(column, super())
147:                 end
148:               end
149:               define_method("#{column}=") do |v| 
150:                 changed_columns << column unless changed_columns.include?(column)
151:                 deserialized_values[column] = v
152:               end
153:             end
154:           end
155:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.