Method: Drydock::ObjectCaches::FilesystemCache#fetch

Defined in:
lib/drydock/object_caches/filesystem_cache.rb

#fetch(key, &blk) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/drydock/object_caches/filesystem_cache.rb', line 23

def fetch(key, &blk)
  filename = build_path(key)

  if File.exist?(filename)
    File.read(filename)
  else
    dirname = File.dirname(filename)
    FileUtils.mkdir_p(dirname)

    blk.call.tap do |contents|
      File.open(filename, 'w') do |file|
        file.write contents
      end
    end
  end
end