Module: MemModel::Base::ClassMethods

Includes:
Enumerable
Defined in:
lib/mem_model/base.rb

Instance Method Summary collapse

Instance Method Details

#abortObject



92
93
94
# File 'lib/mem_model/base.rb', line 92

def abort
  MemModel.abort
end

#allObject



53
54
55
# File 'lib/mem_model/base.rb', line 53

def all
  store.to_a
end

#commitObject



96
97
98
# File 'lib/mem_model/base.rb', line 96

def commit
  MemModel.commit
end

#committed?Boolean

Returns:

  • (Boolean)


107
# File 'lib/mem_model/base.rb', line 107

def committed?; false; end

#container_keyObject



23
24
25
# File 'lib/mem_model/base.rb', line 23

def container_key
  name.to_sym
end

#create(atts = {}) ⇒ Object

Create a new record. Example:

create(:name => "foo", :id => 1)


83
84
85
86
# File 'lib/mem_model/base.rb', line 83

def create(atts = {})
  rec = self.new(atts)
  rec.save && rec
end

#delete(record) ⇒ Object



102
103
104
# File 'lib/mem_model/base.rb', line 102

def delete(record)
  persistent{ store.delete(record) }
end

#delete_allObject



76
77
78
# File 'lib/mem_model/base.rb', line 76

def delete_all
  store.clear
end

#each(&block) ⇒ Object



37
38
39
# File 'lib/mem_model/base.rb', line 37

def each(&block)
  store.each(&block)
end

#exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/mem_model/base.rb', line 72

def exists?(id)
  store.any?{ |record| record.id == id }
end

#find(id) ⇒ Object Also known as: []

Find or nil



62
63
64
# File 'lib/mem_model/base.rb', line 62

def find(id)
  store.detect{ |r| r.id == id }
end

#find_by_id(id) ⇒ Object

Find or raise



68
69
70
# File 'lib/mem_model/base.rb', line 68

def find_by_id(id)
  find(id) || raise(UnknownRecord, "Couldn't find #{self.name} with ID=#{id}")
end

#lastObject



57
58
59
# File 'lib/mem_model/base.rb', line 57

def last
  all[-1]
end

#maglev?Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/mem_model/base.rb', line 88

def maglev?
  MemModel.maglev?
end

#model_nameObject



41
42
43
# File 'lib/mem_model/base.rb', line 41

def model_name
  @model_name ||= ModelName.new(self.name)
end

#persistent(&block) ⇒ Object



110
111
112
113
114
115
116
# File 'lib/mem_model/base.rb', line 110

def persistent(&block)
  result = committed? ?
    MemModel.persistent(&block) :
    block.call
  commit
  result
end

#rootObject



32
33
34
# File 'lib/mem_model/base.rb', line 32

def root
  @root ||= root_container::PERSISTENT_ROOT
end

#root_containerObject



19
20
21
# File 'lib/mem_model/base.rb', line 19

def root_container
  MemModel.maglev? ? Maglev : MemModel
end

#sizeObject



49
50
51
# File 'lib/mem_model/base.rb', line 49

def size
  store.size
end

#storeObject



27
28
29
30
# File 'lib/mem_model/base.rb', line 27

def store
  root[:MemModel] ||= {}
  root[:MemModel][container_key] ||= store_class.new
end

#store_classObject



45
46
47
# File 'lib/mem_model/base.rb', line 45

def store_class
  maglev? ? IdentitySet : Set
end