Class: Jsonoid::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonoid/collection.rb

Constant Summary collapse

EXTENSION =
'json'

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Collection

Returns a new instance of Collection.



24
25
26
27
28
29
# File 'lib/jsonoid/collection.rb', line 24

def initialize(name)
  @collection = File.join(Jsonoid.db, name)
  FileUtils.mkdir_p(@collection)
rescue Errno::ENOENT, Errno::EACCES
  # FIXME: add a warning message or abort?
end

Instance Method Details

#delete(id) ⇒ Object



55
56
57
58
59
# File 'lib/jsonoid/collection.rb', line 55

def delete(id)
  File.delete(document(id))
rescue Errno::ENOENT, Errno::EACCES
  raise Document::NotFound, "Document #{id} not found"
end

#eachObject



35
36
37
38
39
40
41
# File 'lib/jsonoid/collection.rb', line 35

def each
  Dir.glob(document('*')) do |fname|
    yield File.read(fname)
  end
rescue Errno::ENOENT, Errno::EACCES
  # FIXME
end

#exists?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/jsonoid/collection.rb', line 31

def exists?
  File.directory?(@collection)
end

#read(id) ⇒ Object



49
50
51
52
53
# File 'lib/jsonoid/collection.rb', line 49

def read(id)
  File.read(document(id))
rescue Errno::ENOENT, Errno::EACCES
  raise Document::NotFound, "Document #{id} not found"
end

#write(id, data) ⇒ Object



43
44
45
46
47
# File 'lib/jsonoid/collection.rb', line 43

def write(id, data)
  open(document(id), 'w') { |f| f.write(data) }
rescue Errno::ENOENT, Errno::EACCES
  raise Document::NotPersisted, "Document #{id} not persisted"
end