class GIGO::ActiveRecord::Base::GigoCoder

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/gigo/active_record/base.rb, line 47
def initialize(klass)
  @klass = klass
  @default_internal = Encoding.default_internal
end

Public Instance Methods

dump(value) click to toggle source
# File lib/gigo/active_record/base.rb, line 64
def dump(value)
  return klass.new.to_yaml if value.nil?
  unless value.is_a?(klass)
    raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}."
  end
  value.to_yaml
end
load(yaml) click to toggle source
# File lib/gigo/active_record/base.rb, line 52
def load(yaml)
  return klass.new if yaml.nil?
  Encoding.default_internal = GIGO.encoding
  value = YAML.load(GIGO.load(yaml))
  unless value.is_a?(klass)
    raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{hash.class}."
  end
  value
ensure
  Encoding.default_internal = @default_internal
end