Sha256: d78f3da892a4b99be7d931024ee318092a953299a0cd1b69dc51f50970700bbb

Contents?: true

Size: 1.25 KB

Versions: 35

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'quby/questionnaires/repos'
require 'quby/questionnaires'

module Quby
  module Questionnaires
    module Repos
      class DiskRepo < Base
        attr_reader :path

        def initialize(path)
          @path = path
          @questionnaire_cache = {}
        end

        def keys
          Dir[File.join(path, "*.rb")].map do |filename|
            File.basename(filename, '.rb')
          end
        end

        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

        def exists?(key)
          questionnaire_path = questionnaire_path(key)
          File.exist?(questionnaire_path)
        end

        def timestamp(key)
          Time.at(File.mtime(questionnaire_path(key)).to_i)
        end

        private

        def store!(key, definition)
          File.open(questionnaire_path(key), 'w') { |f| f.write definition }
          FileUtils.touch questionnaire_path(key), mtime: Time.now
        end

        def questionnaire_path(key)
          File.join(path, "#{key}.rb")
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
quby-5.6.7 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.6 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.5 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.3 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.2 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.1 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.6.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.5.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.4.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.3.1 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.3.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.2.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.1.3 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.1.2 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.1.1 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.1.0 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.0.5 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.0.4 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.0.3 lib/quby/questionnaires/repos/disk_repo.rb
quby-5.0.2 lib/quby/questionnaires/repos/disk_repo.rb