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