class Metacosm::Model

Private Instance Methods

assemble_event(klass, addl_attrs={}) click to toggle source
# File lib/metacosm/model.rb, line 52
def assemble_event(klass, addl_attrs={})
  klass.create(attributes_for_event(klass).merge(addl_attrs))
end
attributes_for_event(klass) click to toggle source

trim down extenralized attrs for evt

# File lib/metacosm/model.rb, line 40
def attributes_for_event(klass)
  # assume evts attrs are attr_accessible?
  keys_to_keep = klass.instance_methods.find_all do |method|
    method != :== &&
      method != :! &&
      klass.instance_methods.include?(:"#{method}=")
  end

  attributes_with_external_id.
    delete_if {|k,v| !keys_to_keep.include?(k) }
end
attributes_with_external_id() click to toggle source
# File lib/metacosm/model.rb, line 30
def attributes_with_external_id
  attrs = to_h
  if attrs.key?(:id)
    new_id_key = self.class.name.split('::').last.underscore + "_id"
    attrs[new_id_key.to_sym] = attrs.delete(:id)
  end
  attrs
end
blacklisted_attribute_names() click to toggle source
# File lib/metacosm/model.rb, line 89
def blacklisted_attribute_names
  [ :@observer_peers ]
end
created_event_class() click to toggle source
# File lib/metacosm/model.rb, line 68
def created_event_class
  @created_event_class ||= (
    created_event_name = self.class.name + "CreatedEvent"
    Object.const_get(created_event_name) rescue nil
  )
end
creation_event() click to toggle source
# File lib/metacosm/model.rb, line 56
def creation_event
  assemble_event created_event_class
end
destroyed_event_class() click to toggle source
# File lib/metacosm/model.rb, line 82
def destroyed_event_class
  @destroyed_event_class ||= (
    destroyed_event_name = self.class.name + "DestroyedEvent";
    Object.const_get(destroyed_event_name) rescue nil
  )
end
destruction_event() click to toggle source
# File lib/metacosm/model.rb, line 64
def destruction_event
  assemble_event destroyed_event_class
end
emit(event) click to toggle source

def register_observer

Simulation.current.watch(self)

end

# File lib/metacosm/model.rb, line 14
def emit(event)
  Simulation.current.receive(event)
end
emit_creation_event() click to toggle source
# File lib/metacosm/model.rb, line 18
def emit_creation_event
  emit(creation_event) if created_event_class
end
emit_destruction_event() click to toggle source
# File lib/metacosm/model.rb, line 26
def emit_destruction_event
  emit(destruction_event) if destroyed_event_class
end
emit_updation_event() click to toggle source
# File lib/metacosm/model.rb, line 22
def emit_updation_event
  emit(updation_event) if updated_event_class
end
updated_event_class() click to toggle source
# File lib/metacosm/model.rb, line 75
def updated_event_class
  @updated_event_class ||= (
    updated_event_name = self.class.name + "UpdatedEvent";
    Object.const_get(updated_event_name) rescue nil
  )
end
updation_event() click to toggle source
# File lib/metacosm/model.rb, line 60
def updation_event
  assemble_event updated_event_class
end