class Quby::Questionnaires::Repos::DiskRepo

Attributes

path[R]

Public Class Methods

new(path) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 12
def initialize(path)
  @path = path
  @questionnaire_cache = {}
end

Public Instance Methods

exists?(key) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 31
def exists?(key)
  questionnaire_path = questionnaire_path(key)
  File.exist?(questionnaire_path)
end
find(key) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 23
def find(key)
  fail(QuestionnaireNotFound, key) unless exists?(key)
  path = questionnaire_path(key)
  definition = File.read(path)
  timestamp  = timestamp(key)
  entity(key, definition, timestamp, path)
end
keys() click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 17
def keys
  Dir[File.join(path, "*.rb")].map do |filename|
    File.basename(filename, '.rb')
  end
end
timestamp(key) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 36
def timestamp(key)
  Time.at(File.mtime(questionnaire_path(key)).to_i)
end

Private Instance Methods

questionnaire_path(key) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 47
def questionnaire_path(key)
  File.join(path, "#{key}.rb")
end
store!(key, definition) click to toggle source
# File lib/quby/questionnaires/repos/disk_repo.rb, line 42
def store!(key, definition)
  File.open(questionnaire_path(key), 'w') { |f| f.write definition }
  FileUtils.touch questionnaire_path(key), mtime: Time.now
end