Module: Engine::Serializable::ClassMethods

Defined in:
lib/engine/serialization/serializable.rb

Instance Method Summary collapse

Instance Method Details

#create(**attrs) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/engine/serialization/serializable.rb', line 63

def create(**attrs)
  instance = allocate
  instance.instance_variable_set(:@uuid, SecureRandom.uuid)
  attrs.each do |attr, value|
    instance.instance_variable_set("@#{attr}", value)
  end
  instance.awake
  instance
end

#inherited(subclass) ⇒ Object



43
44
45
46
# File 'lib/engine/serialization/serializable.rb', line 43

def inherited(subclass)
  super
  Serializable.register_class(subclass)
end

#serializable_attributesObject



53
54
55
56
57
58
59
60
61
# File 'lib/engine/serialization/serializable.rb', line 53

def serializable_attributes
  parent_attrs = if superclass.respond_to?(:serializable_attributes)
                   superclass.serializable_attributes
                 else
                   []
                 end
  own_attrs = @own_serializable_attributes || []
  parent_attrs + own_attrs
end

#serialize(*attributes) ⇒ Object



48
49
50
51
# File 'lib/engine/serialization/serializable.rb', line 48

def serialize(*attributes)
  @own_serializable_attributes ||= []
  @own_serializable_attributes.concat(attributes)
end