class Jsonoid::Collection

Constants

EXTENSION

Public Class Methods

new(name) click to toggle source
# 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

Public Instance Methods

delete(id) click to toggle source
# 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
each() { |read| ... } click to toggle source
# 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?() click to toggle source
# File lib/jsonoid/collection.rb, line 31
def exists?
  File.directory?(@collection)
end
read(id) click to toggle source
# 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) click to toggle source
# 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

Private Instance Methods

document(id) click to toggle source
# File lib/jsonoid/collection.rb, line 63
def document(id)
  File.join(@collection, [id, EXTENSION].join('.'))
end