class SiteInspector::DiskCache

Public Class Methods

new(dir = nil, replace = nil) click to toggle source
# File lib/site-inspector/disk_cache.rb, line 5
def initialize(dir = nil, replace = nil)
  @dir     = dir || ENV['CACHE']
  @replace = replace || ENV['CACHE_REPLACE']
  @memory  = {}
end

Public Instance Methods

get(request) click to toggle source
# File lib/site-inspector/disk_cache.rb, line 11
def get(request)
  return unless File.exist?(path(request))
  return @memory[request] if @memory[request]

  if @replace
    FileUtils.rm(path(request))
    nil
  else
    begin
      contents = File.read(path(request))
      Marshal.load(contents)
    rescue ArgumentError
      FileUtils.rm(path(request))
      nil
    end
  end
end
set(request, response) click to toggle source
# File lib/site-inspector/disk_cache.rb, line 29
def set(request, response)
  File.write(path(request), Marshal.dump(response))
  @memory[request] = response
end

Private Instance Methods

path(request) click to toggle source

The `request` is a Typhoeus::Request, which provides a unique `cache_key` string for exactly this sort of thing.

# File lib/site-inspector/disk_cache.rb, line 38
def path(request)
  File.join(@dir, request.cache_key)
end