class Convertator::Middlewares::FileCacheMiddleware

Constants

DEFAULT_TTL

Public Class Methods

new(file, ttl = DEFAULT_TTL) click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 9
def initialize(file, ttl = DEFAULT_TTL)
  @file = file_open(file)
  @ttl = ttl
end

Public Instance Methods

call() click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 14
def call
  @file.flock(::File::LOCK_EX)
  if file_zero? || file_old?
    data = @prev.call
    file_write(data.to_json)
  else
    data = JSON.parse(file_read)
  end
  @file.flock(::File::LOCK_UN)
  data
end

Private Instance Methods

file_old?() click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 45
def file_old?
  @ttl < (::Time.new.to_i - @file.mtime.to_i)
end
file_open(file) click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 36
def file_open(file)
  ::File.new(file, 'w+')
end
file_read() click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 28
def file_read
  ::File.read(@file.path)
end
file_write(data) click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 40
def file_write(data)
  @file.rewind
  @file.write data
end
file_zero?() click to toggle source
# File lib/convertator/middlewares/file_cache_middleware.rb, line 32
def file_zero?
  File.zero? @file.path
end