class Medo::FileTaskStorage

Public Class Methods

new(filename, reader_class = JsonTaskReader, writer_class = JsonTaskWriter) click to toggle source
# File lib/medo/file_task_storage.rb, line 15
def initialize(filename, reader_class = JsonTaskReader, writer_class = JsonTaskWriter)
  @filename, @reader_class, @writer_class = filename, reader_class, writer_class
  FileUtils.touch(@filename)
end
using_storage(filename) { |storage| ... } click to toggle source
# File lib/medo/file_task_storage.rb, line 8
def self.using_storage(filename)
  storage = self.new(filename)
  yield storage
ensure
  storage.dispose if storage
end

Public Instance Methods

commit() click to toggle source
# File lib/medo/file_task_storage.rb, line 38
def commit
  FileUtils.cp(tempfile.path, @filename)
end
dispose() click to toggle source
# File lib/medo/file_task_storage.rb, line 42
def dispose
  tempfile.unlink
end
read() click to toggle source
# File lib/medo/file_task_storage.rb, line 20
def read
  begin
    File.open(@filename, "rb") do |f|
      @reader_class.new(f).read
    end
  rescue => e
    []
  end
end
write(tasks) click to toggle source
# File lib/medo/file_task_storage.rb, line 30
def write(tasks)
  serializer = @writer_class.new(tempfile)
  serializer.add_tasks(tasks)
  serializer.write
ensure
  tempfile.close
end

Private Instance Methods

tempfile() click to toggle source
# File lib/medo/file_task_storage.rb, line 48
def tempfile
  @tempfile ||= Tempfile.new(File.basename(@filename))
end