Parent

Ditz::FileStorage

stores ditz database on disk

Public Class Methods

new(base_dir) click to toggle source
# File lib/file-storage.rb, line 10
def initialize base_dir
  @base_dir = base_dir
  @project_fn = File.join @base_dir, PROJECT_FN
end

Public Instance Methods

ISSUE_TO_FN(i;) click to toggle source
# File lib/file-storage.rb, line 8
def ISSUE_TO_FN i; "issue-#{i.id}.yaml" end
filename_for_issue(i;) click to toggle source
# File lib/file-storage.rb, line 50
def filename_for_issue i; File.join @base_dir, ISSUE_TO_FN(i) end
filename_for_project() click to toggle source
# File lib/file-storage.rb, line 51
def filename_for_project; @project_fn end
load() click to toggle source
# File lib/file-storage.rb, line 15
def load
  Ditz::debug "loading project from #{@project_fn}"
  project = Project.from @project_fn

  fn = File.join @base_dir, ISSUE_FN_GLOB
  Ditz::debug "loading issues from #{fn}"
  project.issues = Dir[fn].map { |fn| Issue.from fn }
  Ditz::debug "found #{project.issues.size} issues"

  project.issues.each { |i| i.project = project }
  project
end
save(project) click to toggle source
# File lib/file-storage.rb, line 28
def save project
  dirty = false
  dirty = project.each_modelobject { |o| break true if o.changed? }
  if dirty
    Ditz::debug "project is dirty, saving #{@project_fn}"
    project.save! @project_fn
  end

  changed_issues = project.issues.select { |i| i.changed? }
  changed_issues.each do |i|
    fn = filename_for_issue i
    Ditz::debug "issue #{i.name} is dirty, saving #{fn}"
    i.save! fn
  end

  project.deleted_issues.each do |i|
    fn = filename_for_issue i
    Ditz::debug "issue #{i.name} has been deleted, deleting #{fn}"
    FileUtils.rm fn
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.